Java-Collection-集合详解
集合体系图
Set集合
1.set集合的特点
Set集合特点是无序唯一
2.set集合的唯一性如何保证
对象引用相等性与对象相等性参考:java对象相等判断
Set集合就是对比对象的相等性来保证元素的唯一性,但hashCode相等的时候并不一定保证元素唯一,还有对比equal方法是否相等,只有hashCode和equal同时相等,才认为是相同元素,Set集合只会保存其中一个元素。
Set集合两种存储形态:
A:hashCode相同 而equal不相同的情况 此时认为元素只是在相同的哈希桶内
B:hashCode不同
ArrayList和HashSet都有判断元素是否已经存在的方法:
contains();
ArrayList只是用了equal方法判断
HashSet使用了 hashCode和equals
3.set集合实现类分析
类型 | 实现使用map对象 | 数据结构 |
---|---|---|
HashSet | HashSet | 散列表(拉链法) |
LinkedHashSet | LinkedHashSet | 双向链表+散列表(拉链法) |
3.1 HashSet
HashSet底层是以hash表实现,线程不安全,效率高,存取速度快。
3.2 TreeSet
红-黑树的数据结构,默认对元素进行自然排序(String)。如果在比较的时候两个对象返回值为0,那么元素重复。
TreeSet默认排序方式为自然排序,既然有排序方式,肯定可以指定排序规则,下面有两种方式可以指定TreeSet的排序规则
1: 元素自身具有排序规则
元素自身具备比较性,需要元素实现Comparable接口,重写compareTo方法,也就是让元素自身具备比较性,这种方式叫做元素的自然排序也叫做默认排序。
例如Set里面存储String类型的数据,Stri