美文网首页
HashSet源码分析

HashSet源码分析

作者: 言西枣 | 来源:发表于2016-05-18 11:23 被阅读31次

    源码来自jdk1.8


    • HashSet实现了Set接口
    • 内部由一个HashMap实现
    • 允许一个null值
    • 不同步
    • add, contains, remove, size O(1)
    • iterator fast fail
    public class HashSet<E>
        extends AbstractSet<E>
        implements Set<E>, Cloneable, java.io.Serializable
    {
        private transient HashMap<E,Object> map;
    
        // Dummy value to associate with an Object in the backing Map
        private static final Object PRESENT = new Object();
    
        /**
         * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has
         * default initial capacity (16) and load factor (0.75).
         */
        public HashSet() {
            map = new HashMap<>();
        }
        // 省略了其他方法
    }
    

    由于是用HashMap实现的,所以每次添加元素的时候,key来存储值,value就是静态的PRESENT。
    其他所有的方法都是由调用map里的方法实现的。

    相关文章

      网友评论

          本文标题:HashSet源码分析

          本文链接:https://www.haomeiwen.com/subject/ukhwrttx.html