// hashset底层实际就是维护了一个hashmap private transient HashMap关键方法 构造方法:map; // 对象关联的虚拟值 简单来说 就是所有key的value值 private static final Object PRESENT = new Object();
这三个构造方法实际就是调用了hashmap的构造方法
add方法
hashset的add方法实际上就是调用了hashmap的put方法,key使我们要添加到set集合中的值对象,value是初始化的一个object对象
remove方法
也是调用的hashmap的remove方法,hashmap的remove方法会返回被删除的对象
这里通过返回值是否与add添加的对象相等来判断是否删除成功
取值这里有人可能会问为什么hashset没有get方法来获取值 这个问题刚开始也困扰了一下我 hashmap与hashset的区别是什么
hashmap是put(key,value)的键值对类型的数据,key和value对我们讲都是有意义的
haset是add(value) 它只有一个入参,通过源码咱们可以看出 hashset实际上就是给hashmap的value设置成了同一个值 我们要存的数据实际上是存在了hashmap的key这个位置 hashmap提供的get方法是通过key来获取value 这个value才是我们需要的数据
但是通过hashset存进map里面的数据实际上是这个key hashmap也没有通过get来获取key的方法,而是通过迭代器来实现获取key的 这也是为什么haset没有通过get来获取值的原因吧
所以我们只能通过循环或者迭代器来获取里面的值



