安诺爱思考

talk is cheap,show me the code.!!!要重实践。找准定位和方向,不急不躁,持续投入。顺势而为。...

JAVA集合源码分析系列:HashSet源码分析

HashSet

分析

HashSet是一个没有重复元素的集合。
它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。

HashSet的父类和实现的接口

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable

构造函数

    public HashSet() {
        map = new HashMap<>();
    }

从构造方法可以很轻松的看出,HashSet的底层是一个HashMap,理解了HashMap后,这里没什么可说的。

属性

    static final long serialVersionUID = -5024744406713321676L;

    private transient HashMap<E,Object> map;

    // Dummy value to associate with an Object in the backing Map
    private static final Object PRESENT = new Object();

看到这里就明白了,和我们前面说的一样,HashSet是用HashMap来保存数据,而主要使用到的就是HashMap的key。

行为

add方法分析

    public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }

利用HashMap的put方法实现add方法

remove方法分析

    public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }

利用HashMap的remove方法实现remove方法

阅读更多
版权声明:不积跬步无以至千里 https://blog.csdn.net/a910626/article/details/52357082
个人分类: java提高
想对作者说点什么? 我来说一句

集合框架源码分析

2011年09月25日 318KB 下载

没有更多推荐了,返回首页

不良信息举报

JAVA集合源码分析系列:HashSet源码分析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭