美文网首页
java8中linkedhashSet源码分析

java8中linkedhashSet源码分析

作者: 隔壁小新 | 来源:发表于2022-10-23 10:25 被阅读0次

大纲

  • 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);
喜欢的话点个👍呗

相关文章

网友评论

      本文标题:java8中linkedhashSet源码分析

      本文链接:https://www.haomeiwen.com/subject/mqtgzrtx.html