TreeSet
既然叫TreeSet了,再根据LinkedHashMap的实现情况,我猜测,TreeSet应该是封装了TreeMap
public TreeSet() {
this(new TreeMap<E,Object>());
}
TreeSet(NavigableMap<E,Object> m) {
this.m = m;
}
private transient NavigableMap<E,Object> m;
果不其然。
public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
public boolean contains(Object o) {
return m.containsKey(o);
}
所以,TreeSet是封装了TreeMap,TreeMap利用红黑树,Key值是根据大小排序的。而TreeSet是把Key作为Set集合中的元素的,所以TreeSet也能根据大小排序,相比LinkedHashSet是根据插入的先后顺序排序的。