hashCode和equals的联系

来源:互联网 发布:开淘宝店做淘宝客 编辑:程序博客网 时间:2024/04/28 23:33

hashCode和Equals的联系:http://blog.csdn.net/afgasdg/article/details/6889383

之前的理解:(equals是判断对象的引用是否是一个对象,String的时候也是,两个new String("ABC");equals是相等的因为他们的引用指向都是ABC字符串字面量。这是默认不重写equals的时候,

==就是false,==在判断两个对象是否相等,两个new String("ABC");是两个对象所以说==是false;

hashCode:在set中先用hashCode比较,若不相等则直接插入,若相等是同一种对象,相等后再比较equals,若是都相等则是重复元素则不插入,若不想等则插入。)


现在的理解:

Object类equals默认是比较地址,而String类型的equals是重写后的,他是比较内容的。

==是比较地址,不重写equals实收,equals和==比较的结果是一样的。

hashCode:不重写的时候,只是有同一个对象时相同的,重写之后根据计算属性计算只有是空对象的时候是相同的,一旦有一个对象给属性赋值就不同了。重写equals,一定要重写hashCode,以保证完整性。

将对象放入到集合中时,首先判断要放入对象的hashcode值与集合中的任意一个元素的hashcode值是否相等,如果不相等直接将该对象放入集合中。如果hashcode值相等,然后再通过equals方法判断要放入对象与集合中的任意一个对象是否相等,如果equals判断不相等,直接将该元素放入到集合中,否则不放入。

0 0
原创粉丝点击