HashSet
结构
public class HashSet
extends AbstractSet
implements Set, Cloneable, java.io.Serializable
特点
- 使用HashMap实现
- 线程不安全
- 允许null值
成员变量
//HashSet持有的HashMap
private transient HashMap<E,Object> map;
//map中所有键对应的值都为PRESENT
private static final Object PRESENT = new Object();
重要方法
HashSet(int initialCapacity, float loadFactor, boolean dummy)
该构造方法生成一个LinkedHashMap,其余构造方法都是生成HashMap
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
基本上HashSet的方法都是基于HashMap的,所以就不列出了。
LinkedHashSet
结构
public class LinkedHashSet
extends HashSet
implements Set, Cloneable, java.io.Serializable
特点
- 使用LinkedHashMap实现
- 线程不安全
- 允许null值
LinkedHashSet的方法都是基于LinkedHashMap的实现
TreeSet
结构
public class TreeSet extends AbstractSet
implements NavigableSet, Cloneable, java.io.Serializable
特点
- 基于TreeMap实现
- 线程不安全
- 允许null值
成员变量
//持有NavigableMap对象
private transient NavigableMap<E,Object> m;
//所有键对应的值
private static final Object PRESENT = new Object();
重要方法
用指定的NavigableMap来构造TreeSet
TreeSet(NavigableMap<E,Object> m) {
this.m = m;
}