程序员社区

jdk HashSet源码解读

一、属性

1.1 map

HashSet的底层存储方式是HashMap

private transient HashMap<E,Object> map;

1.2 PRESENT

因为HashMap中需要键值对来进行存储而HashSet只存储单个变量,因此创建一个没有意义的变量来配合HashSet的变量来进行存储

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

二、方法

2.1 add

如果set中不存在e2使得:e= =null?e2= =null:e.equals(e2),那么向set中添加e,如果已经存在这样的e2,那么set不变,返回false

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

赞(0) 打赏
未经允许不得转载:IDEA激活码 » jdk HashSet源码解读

一个分享Java & Python知识的社区