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实现
    有序,按照插入顺序排序

  • 相关阅读:
    移动触摸事件之二
    移动touch事件之一
    Phonegap创建项目语法
    JS自定义去除字符串左右两边的指定字符
    video标签常用属性及说明
    html5开发之viewport使用
    页面事件总结
    缓存与预取
    修改JQM的默认配置属性
    JQM事件详解
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284617.html
Copyright © 2011-2022 走看看