黑马程序员技术交流社区
标题:
HashSet集合去除重复元素为什么要先重写hashCode()方法的理解
[打印本页]
作者:
左右.律
时间:
2016-9-9 22:43
标题:
HashSet集合去除重复元素为什么要先重写hashCode()方法的理解
HashSet的底层存放依据是根据算法求出的,所以它会根据元素的哈希值来考略其应该存放在什么位置.
我们在堆上新new对象的时候,每个新建的对象的哈希值都是不同的,即使属性相同的对象,也会认为是两个不同的元素,分别存在不同的位置.
当我们依据对象属性重写hashCode()方法后,当对象属性完全相同,会被判断为哈希值相同,被HashSet集合判断为存在同一个位置.
这个时候我们就要重写equals()方法来判断是否为同一个元素,判断相同,则存入,判断不同,则不存如.
很多人不理解String类为什么可以直接存放就可以去重,其实是String类已经重写了hashCode方法和equals()方法.
作者:
哈韩浪子
时间:
2016-9-9 22:50
也同问
作者:
yigezhifu
时间:
2016-9-9 22:55
说得很正确。
作者:
Zzh94520
时间:
2016-9-9 23:12
66666666666666
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2