HashSet源码分析

来源:互联网 发布:mac怎么卸载java 编辑:程序博客网 时间:2024/05/20 10:21
// HashSet的关键源码public class HashSet<E>    extends AbstractSet<E>    implements Set<E>, Cloneable, java.io.Serializable{// HashSet中封装的HashMap,这个map也是数据储存的地方    private transient HashMap<E,Object> map;//在add方法中调用map.put(key,value)方法,把要添加的元素传给key,把PRESENT传给Value    private static final Object PRESENT = new Object();// HashSet默认的构造方法,构造了一个HashMap    public HashSet() {        map = new HashMap<>();    }// 添加一个元素    public boolean add(E e) {//调用map.put(key,value)方法,若添加成功,则put方法返回null,进而add方法返回true// *****HashSet集合中添加进来的元素是存放在HashMap中的Key中,而HashMap中的Value则放一个没有任何意义的Object对象PRESENT        return map.put(e, PRESENT)==null;    }// map.remove(key)方法,若存在该key,则返回key.value,否则返回null    public boolean remove(Object o) {        return map.remove(o)==PRESENT;    }}

0 0