上一篇 <<<基于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元素值也是唯一的。
网友评论