Set 源码阅读

不问归期 提交于 2020-01-24 11:02:26

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>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!