Set 源码阅读
仅大致过了下,有问题的请指出,谢谢。
版本
1.8
介绍
一个无重复值的集合。
HashSet
数据无需。
public class HashSet<E> extends AbstractSet<E>
implements Set<E>
属性
使用map存储,值全部使用PRESENT
private transient HashMap<E,Object> map;
private static final Object PRESENT = new Object();
null
可插入一个null,多次插入只有一个null有效。
原因:hash(null)
结果为0
LinkedHashSet
保留插入顺序。
public class LinkedHashSet<E> extends HashSet<E>
implements Set<E>
HashSet
存在如下构造器,为LinkedHashSete提供,使其map
属性为LinkedHashMap
类型。
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
TreeSet
默认升序,左子树 < 根 < 右子树。
public class TreeMap<K,V> extends AbstractMap<K,V>
implements NavigableMap<K,V>
m
属性实例化时,为’TreeMap’
private transient NavigableMap<E,Object> m;
// TreeMap类
public class TreeMap<K,V> extends AbstractMap<K,V>
implements NavigableMap<K,V>
来源:CSDN
作者:清澈。初见
链接:https://blog.csdn.net/qq_31854267/article/details/103993668