编程语言爱好者Java服务器端编程JVM · Java虚拟机原理 · JVM上语言·框架· 生态系统

HashSet集合底层实现原理

2021-01-03  本文已影响0人  迦叶_金色的人生_荣耀而又辉煌

上一篇 <<<基于LinkedHashMap手写LRU淘汰策略
下一篇 >>>HashTable底层实现原理及和ConcurrentHashMap区别


HashSet集合底层是如何实现的

HashSet 底层是基于hashmap实现的,能够继承HashMap的所有特性,所以不能使用get方法,key也不允许重复,但支持null对象作为key。
所以结构也是数组+链表+红黑树
hashSet使用hashmap时,key是set的值,value是占位符,没有实际意义

public HashSet(int initialCapacity, float loadFactor) {
       map = new HashMap<>(initialCapacity, loadFactor);
}
private static final Object PRESENT = new Object();
public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}
public boolean remove(Object o) {
    return map.remove(o)==PRESENT;
}

HashSet底层如何保证Key不允许重复

hashmap在hashCode相同且equals比较值相同的时候执行的是更新操作,所以Hashmap中的key是唯一的,也决定了hashset元素值也是唯一的。

上一篇 下一篇

猜你喜欢

热点阅读