欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList,HashSet判断对象是否重复的原理,arraylisthashset

来源: javaer 分享于  点击 49544 次 点评:61

ArrayList,HashSet判断对象是否重复的原理,arraylisthashset


HashSet集合由于是无序的,其判断唯一的依据是元素类型的hashCodeequals方法的返回结果。规则如下:

      先判断新元素与集合内已经有的旧元素的HashCode

         如果不同,说明是不同元素,添加到集合。

         如果相同,再判断equals比较结果。返回true则相同元素;返回false则不同元素,添加到集合。

所以,使用HashSet存储自定义类型,如果没有重写该类的hashCodeequals方法,则判断重复时,使用的是地址值,如果想通过内容比较元素是否相同,需要重写该元素类的hashcodeequals方法。

     自定义类的equals方法仿照String重写hashcode() 代码如下

     String类型的调用自身的hashCode方法+int类型的*较大的数即可

    public int hashCode() {
        int h = 0;
        Iterator<E> i = iterator();
        while (i.hasNext()) {
            E obj = i.next();
            if (obj != null)
                h += obj.hashCode();
        }
        return h;
    }

eclipse重写 equals() 和Hashcode()的快捷键:Alt+Shift+S

相关文章

    暂无相关文章

用户点评