在学习hashset的时候,对hashset怎么判断元素唯一性不太理解,于是便去网上学习和询问大佬,希望一下内容能够帮助你
set集合怎么去保证元素的唯一性?
‘==‘和‘equals‘方法的区别:如果一个类没有重写equals方法,那么equals和==是一样的,都是去比较的内存地址
hashcode和equals方法的关系
equals相等,hashcode必须相等
equals不相等,hashcode可以相等,也可以不相等,不相等可以提高性能
所以,hashset的元素唯一性是根据equals和hashcode来判断的;首先,在添加add元素的时候,计算先添加的元素
的hashcode,得到一个结果,然后把这个结果去这个集合里面找,看有没有相同的hashcode,如果没有意味着内存地址不相等,该元素唯一可以直接添加; 如果有相同的hashcode,在比较equals是否相等,如果相等,则表示新添加的元素在集合中已经存在,忽略,不添加。如果不相等,则直接添加(因为equals不相等,hashcode既可以相等也可以不等,总的来说我们还是比较的equals,只是借助于hashcode的比较来反映)
原文:https://www.cnblogs.com/acyss/p/14820966.html