1.实现原理:基于哈希表实现(HashMap)实现
2.不允许重复,可以有一个null值
3.不保证顺序恒久不变
4.添加元素时把元素作为HashMap的key来存储,HashMap的value使用一个固定的object对象(present)
5.排除重复元素是通过equals来检查对象是否相同
6.判断两个对象是否相同,先判断两个对象的hashCode是否相同 (如果两个对象的hashCode相同,不一定是同一个对象,如果不同,那一定不是同一个对象),如果不同,则判断两个对象不是同一个对象,如果相同,还要进行equals判断,equals相同则是同一个对象,不同则不是同一个对象
7.自定义对象要认为属性值都相同时为同一个对象,有这种需求时,那么我们要重写对象所在类的hashCode和equals方法。
小结
(1) 哈希表的存储结构:数组+链表,数组里的每个元素以链表的形式存储
(2)如何把对象存储到哈希表中,先计算对象的hashCode值,再对数组的长度求余数,来决定对象要存储在数组中的哪个位置
(3)解决hashSet中的重复值使用的方式是,参考第六点
-
如果要排序,选择treeSet
-
如果不要排序,也不用保证顺序,选择HashSet
-
如果不要排序,但是要保证顺序,选择LinkedHashSet
网友评论