java何时使用equals和hashcode?

时间:2021-12-16 16:09:28

1.
List使用List.removeall(),remove()去重时,直接remove是比较对象地址,如果想比较其内的值相等就相等的话则equals就返回true,只需要重写equals,无需重写hashcode,此时这两个对象的hashCode是不同的(理论上如此),经验之谈的话。两个都重写较好,根据实际情况;
2.
Set和Hashmap的使用contain,需要重写 equals和hashcode,因为
重写hashCode是为了集合类存储这些对象的时候有个比较规则,比如Map,HashSet不允许重复元素,就是通过hashCode来检测的

参考文章:http://blog.csdn.net/renfufei/article/details/14163329
http://www.cnblogs.com/yaobolove/p/5086510.html