HashSet 与 HashMap

Posted chafanbusi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashSet 与 HashMap相关的知识,希望对你有一定的参考价值。

hashcode() 与 equals() 应一起重写,在HashMap 会先调用hash(key.hashcode()) 找到对应的entry数组位置 (一般初始是16,2^x,rehash后会翻倍),再在这个entry链表上equals判断是否存在相同元素。

所以当重写equals时没保证hashcode出的值的一致性,会导致hash到不同的数组位置 插入重复的元素。

※String类的hashcode是通过各个位置的char的ascii码计算Σx*31^(len-i)得到的※

 

以上是关于HashSet 与 HashMap的主要内容,如果未能解决你的问题,请参考以下文章

HashSet的实现,与hashMap的关系

HashSet与TreeSet

HashSet与TreeSet

HashSet与HashMap

集合类--最详细的面试宝典--看这篇就够用了(java 1.8)

HashMap与HashSet的区别