黑马程序员技术交流社区

标题: 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