大纲
- linkedhashset原理分析
- linkedhashset源码分析
1. linkedhashset原理分析
linkedhashset继承了hashset类,在hashset类中创建了一个linkedhashmap给到了map对象,所以linkedhashset是linkedhashmap实现的功能,所以linkedhashmap使用数组+单项链表+红黑树,和双向链表的方式实现了linkedhashmap的功能。
2. linkedhashset源码分析
- 2.1 构造方法分析
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true);
}
public LinkedHashSet() {
super(16, .75f, true);
}
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true);
addAll(c);
}
public LinkedHashSet(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor, true);
}
public LinkedHashSet(int initialCapacity) {
super(initialCapacity, .75f, true);
}
public LinkedHashSet() {
super(16, .75f, true);
}
public LinkedHashSet(Collection<? extends E> c) {
super(Math.max(2*c.size(), 11), .75f, true);
addAll(c);
}
private transient HashMap<E,Object> map;
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}
从方法中分析linkedhashset都是调用了继承类hashset中的HashSet(int initialCapacity, float loadFactor, boolean dummy)构造方法,通过当前方法为hashset中的map创建了一个linkedhashmap类,通过当前类实现了调用linkedhashmap中的put(),get(),remove()方法实现了linkedhashset中的各种功能。
linkedhashset中的源码很短,如果向了解linkedhashmap的底层实现可以查看我的上一篇文章java8中linkedhashmap源码分析 - 简书 (jianshu.com);
喜欢的话点个👍呗
网友评论