美文网首页
equals与hashcode

equals与hashcode

作者: remoteMountain | 来源:发表于2020-05-28 21:26 被阅读0次

为什么重写了equals ,必须要重写hashcode函数。

String a = new String("abc");
String b = "abc";

System.out.println(a.equals(b)); //true
System.out.println(a == b); // false

Map<String> map = new HashMap();
map.put(a,1);
 System.out.println(map.get(a)); //1
map.put(b,2);
System.out.println(map.get(a)); //2

以String为例,a和b的equals比较结果为true。如果没有重写hashcode函数,则使用的是Object类中的实现,Object类中的hashcode函数对于两个不同对象返回不同的值。试想下,如果用a和b作为HashMap中的key去调用put方法,则得到的数组下标必然不同,然而两者的equals比较却相同,产生了矛盾。

相关文章

网友评论

      本文标题:equals与hashcode

      本文链接:https://www.haomeiwen.com/subject/dplzahtx.html