Iterator与LIstIterator接口在java中的区别有哪些
262
2022-06-21
一、Set集合
1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构。
2.哈希表又称为散列表,哈希表底层是一个数组,这个数组中每一个元素是一个单向链表,每个单向链表都有一个独一无二的hash值,代表数组的下标。在某个单向链表中的每一个节点上的hash值是相等的,hash值实际上是key调用hashCode方法,再通过"hash function"转化成的值。
3.如何向哈希表中添加元素
先调用被存储的key的hashCode方法,经过某个算法得出的hash值,如果在这个哈希表中不存在这个hash值,则直接加入元素。如果该hash值已经存在,继续调用key之间的equals方法,如果equals方法返回false,则将该元素添加。如果equals方法返回true,则放弃添加该元素。
4.HashSet其实是HashMap中的key部分,HashSet有什么特点,HashMap中的key应该具有相同的特点。
5.HashMap和HashSet初始化容量都是16,默认加载因子0.75
二、重写hashCode和equals方法(有一个原则:散列均匀分布)
解释:六个对象里面有一个完全相同,因此会输出五个元素;如果不重写的话,就会输出六个元素。
总结:存储在HashSet集合或者HashMap集合key部分的元素,需要同时重写hashCode和equals方法
三、源码:
D88_1_HashSetExample.java
D88_2_HasCodeAndEqualsMethod.java
https://github.com/ruigege66/Java/blob/master/D88_1_HashSetExample.java
https://github.com/ruigege66/Java/blob/master/D88_2_HasCodeAndEqualsMethod.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://cnblogs.com/ruigege0000/
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~