HashSet
1 | public class HashSet<E> |
构造函数
1 | // 默认构造函数 |
数据结构
HashSet
是一个没有重复元素的集合- 由
HashMap
实现的,不保证元素的顺序 - 允许使用 null 元素
- 非线程安全, 用
Collections.synchronizedSet
分装
1 | Set s = Collections.synchronizedSet(new HashSet(...)); |
HashSet
通过iterator()
返回的迭代器是fail-fast
的。- 成员变量
1 | private transient HashMap<E,Object> map; //基于map实现 |
源码分析
1 | public Iterator<E> iterator() { |
TreeSet
1 | public class TreeSet<E> extends AbstractSet<E> |
构造函数
1 | //将TreeMap 赋值给NavigableMap |
数据结构
TreeSet
是一个有序的,且没有重复元素集合,它的作用是提供有序的Set集合。TreeSet
实现了NavigableSet
接口,意味着它支持一系列的导航方法。比如查找与指定目标最匹配项。TreeSet
是基于TreeMap
实现的。TreeSet
中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet
时提供的Comparator
进行排序。这取决于使用的构造方法。- 非线程安全
- 成员变量:
1 | private transient NavigableMap<E,Object> m; //NavigableMap对象,基于TreeMap实现(传入new TreeMap<E,Object>()) |
源码分析
1 | //将集合中的元素赋值给TreeSet |
LinkedHashSet
1 | public class LinkedHashSet<E> |
数据结构
- LinkedHashSet继承自HashSet,内部使用LinkHashMap
- 内部元素有序,按插入顺序或者访问顺序