zoukankan      html  css  js  c++  java
  • LinkedHashSet源码分析

    简介

    set接口的hash表和链表的实现,和HashSet不一样的地方是维护了一个双向链表记录插入顺序,请注意仅仅是插入顺序。

    类图

    在这里插入图片描述

    代码

    -- 你没看错 就这么多代码 关键点在 继承HashSet
    public class LinkedHashSet<E> extends HashSet<E>
        implements Set<E>, Cloneable, java.io.Serializable {
    
        private static final long serialVersionUID = -2851667679971038690L;
    
    	-- 这四个构造调用同一个父类构造
        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 Spliterator<E> spliterator() {
            return Spliterators.spliterator(this, Spliterator.DISTINCT | Spliterator.ORDERED);
        }
    }
    
    --让我们看看 HashSet为LinkedHashSet特意写的构造方法
    --权限是包权限 实现是一个LinkedHashMap,最后那个dummy参数只是为了区分其他构造
    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
       map = new LinkedHashMap<>(initialCapacity, loadFactor);
    }
    

    总结

    使用LinkedHashMap实现
    有序,按照插入顺序排序

  • 相关阅读:
    ajax--->简单加法小练习
    Django----->Ajax
    Django----->inclusion_tag的使用
    分页插件
    权限--中间件
    Django----->一周后的重温
    Django---->视图(View)
    【转载】chmod命令详解
    【转载】linux ls -l命令详解
    js自定制周期函数
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284617.html
Copyright © 2011-2022 走看看