搞懂JAVA集合类--HashSet, LinkedHashSet, TreeSet(五)
来源:互联网 发布:免费淘宝代码 编辑:程序博客网 时间:2024/05/29 03:30
HashSet, LinkedHashSet, TreeSet分别使用HashMap,LinkedHashMap和TreeSetMap作为底层实现
HashSet 的实现其实非常简单,它只是封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,而 HashMap 的 value 则存储了一个 PRESENT,它是一个静态的 Object 对象。
HashSet 判断两个对象相等的标准除了要求通过 equals() 方法比较返回 true 之外,还要求两个对象的 hashCode() 返回值相等。如果要放入Set中, 对象的这两个方法必须同时重写。
LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起 来像是以插入顺序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。查询都是基于Hash表,性能相当。
TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。向TreeSet中加入的应该是同一个类的对象。
TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0。
自然排序使用要排序元素的CompareTo(Object obj)方法来比较元素之间大小关系,然后将元素按照升序排列。使用Comparable接口。如果要定制排序,应该使用Comparator接口,实现 int compare(T o1,T o2)方法,创建 set 时所提供比较器。
注意一点,TreeSet理论上不需要重写HashCode和Equals方法,但compare方法可能会调用Equals方法,建议重写
- 搞懂JAVA集合类--HashSet, LinkedHashSet, TreeSet(五)
- Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
- Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
- 【Java集合之Set】HashSet、TreeSet、LinkedHashSet区别
- Java集合之四Set、HashSet、LinkedHashSet、TreeSet
- 17. 集合类 (Set的子类HashSet、LinkedHashSet、TreeSet)
- java集合类(五)HashSet与TreeSet应用实例
- 【JAVA基础】HashSet、LinkedHashSet、TreeSet使用区别
- 【Java】HashSet、LinkedHashSet、TreeSet使用区别
- HashSet、LinkedHashSet、TreeSet+JAVA学习笔记-DAY17
- [JAVA] HashSet 、 LinkedHashSet 、TreeSet 的简单应用
- HashSet、LinkedHashSet和TreeSet
- HashSet-TreeSet-LinkedHashSet
- HashSet、TreeSet和LinkedHashSet
- HashSet/LinkedHashSet/TreeSet
- HashSet、LinkedHashSet和TreeSet
- Set--HashSet, LinkedHashSet, TreeSet
- TreeSet,HashSet和LinkedHashSet
- ios 单元格里存放输入框 获取对应输入框输入的值
- 10月英语——方法总比困难多
- 矩阵快速幂与递推式
- Android将图片转化为灰色的方法
- YAF 菜鸟的学习笔记
- 搞懂JAVA集合类--HashSet, LinkedHashSet, TreeSet(五)
- c#(1)
- 手动解析及数据链接地址
- C程序使用openmp时没有起到作用
- 数据类型之间的转换
- Eclipse中tomcat启动不了
- CentOS VI常用命令
- D3D11的纹理寻址模式
- SAR学习