Set集合
最大的特点就是不允许保存重复的元素。其有两个常用的子类,HashSet,TreeSet。
HashSet
- HashSet是Set接口中使用最多的一个子类,最大的特点是保存的数据是无序的。
- 特点:
- 保存的数据是无序的
- 不保存重复的数据
TreeSet
特点
- 保存的数据不重复
- 按照数据的升序进行排序
关于重复元素的说明
- HashSet并不是利用
Comparable
接口判读数据重复,他利用的是Object类中的方法实现的。hashCode
编码,equals
比较。eclipse能自动生成hashCode
,equals
函数- 对象编码:
hashCode
- 对象比较:
equals
- 对象编码:
- 在Java中,对于重复元素的判断处理,就是利用的
hashCode
,equals
函数完成的,只有在排序(TreeSet)时,才会使用Comparable
接口实现
存入自定义的类型
- TreeSet本质上是使用的TreeMap实现的数据存储,而TreeMap就需要
Comparable
接口确定大小关系 - 自定义的类型要实现
Comparable
接口,只有实现这个接口才能知道大小关系 - TreeSet 在实现比较的时候,一定要把所有的属性都要进行比较,否则,部分属性相同,也会认为是重复数据。因此,TreeSet是利用
Comparable
接口确认重复数据的 - 由于TreeSet需要将所有的属性进行比对,实现难度太高,因此开发的时候一般使用HashSet进行储存
来源:oschina
链接:https://my.oschina.net/liuxiaofan0/blog/4294723