HashSet学习笔记

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 11,641评论 2 61
  • Java集合 1、集合的由来 程序的需求也许并不能确定创建对象的数量,甚至不知道对象的类型,为了满足普适的编程需要...
    小灰灰_5c75阅读 1,024评论 0 0
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,751评论 0 11
  • 想说点什么 可是又不知道应该说什么 ,感觉现在过的每一天 好像没有一天可以纪念的一样。总觉得现在让自己净下心来是一...
    小翟阅读 121评论 0 1
  • 下雪时,我总想到夏天,因成熟而褪色的榆荚被风从树梢吹散。雪纷纷扬扬,给人间带来某种和谐感,这和谐感正来自于纷纭之中...
    迷鹿mirror阅读 273评论 0 0