A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

    HashSet的底层存放依据是根据算法求出的,所以它会根据元素的哈希值来考略其应该存放在什么位置.
    我们在堆上新new对象的时候,每个新建的对象的哈希值都是不同的,即使属性相同的对象,也会认为是两个不同的元素,分别存在不同的位置.
    当我们依据对象属性重写hashCode()方法后,当对象属性完全相同,会被判断为哈希值相同,被HashSet集合判断为存在同一个位置.
    这个时候我们就要重写equals()方法来判断是否为同一个元素,判断相同,则存入,判断不同,则不存如.
    很多人不理解String类为什么可以直接存放就可以去重,其实是String类已经重写了hashCode方法和equals()方法.

3 个回复

倒序浏览
也同问   
回复 使用道具 举报
说得很正确。
回复 使用道具 举报
66666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马