• Java 集合:(十三) Set实现类:LinkedHashSet


    一、LinkedHashSet 概述

      (1)LinkedHashSet HashSet 的子类
      (2)LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。

      (3)LinkedHashSet作为HashSet的子类,在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个数据和后一个数据。
      (4)LinkedHashSet插入性能略低于 HashSet但在迭代访问 Set 里的全部元素时有很好的性能,对于频繁的遍历操作,LinkedHashSet效率高于HashSet
      (5)LinkedHashSet 不允许集合元素重复。

        

      

    二、LinkedHashSet 结构

      1、LinkedHashSet 声明

    public class LinkedHashSet<E>
        extends HashSet<E>
        implements Set<E>, Cloneable, java.io.Serializable
    

      

      2、LinkedHashSet 结构

        

      3、LinkedHashSet 方法

        

    三、LinkedHashSet 创建

      1、构造器

        LinkedHashSet 提供了四种构造器:

     1 public LinkedHashSet() {
     2     super(16, .75f, true);
     3 }
     4 public LinkedHashSet(int initialCapacity) {
     5     super(initialCapacity, .75f, true);
     6 }
     7 public LinkedHashSet(int initialCapacity, float loadFactor) {
     8     super(initialCapacity, loadFactor, true);
     9 }
    10 public LinkedHashSet(Collection<? extends E> c) {
    11     super(Math.max(2*c.size(), 11), .75f, true);
    12     addAll(c);
    13 }

        可以发现都是调用了父类的一个构造器:

    HashSet(int initialCapacity, float loadFactor, boolean dummy) {
      map = new LinkedHashMap<>(initialCapacity, loadFactor);
    }
    

        在此就可以发现 LinkedHashSet 本质上是使用 LinkedHashMap 来存储和管理数据的。

      2、

      3、

    四、

  • 相关阅读:
    共享一个从字符串转 Lambda 表达式的类(2)
    多个文件上传控件
    使用 SQL的 for xml path来进行字符串拼接
    数据结构之双向链表
    我的收藏颜色代码表
    C++中的字节对齐分析
    收藏sina播放器嵌入代码
    弃用数据库自增ID,曝光一下我自己用到的解决方法之终结篇
    google工作原理图
    easyicon一个非常好用的找图标的网站
  • 原文地址:https://www.cnblogs.com/niujifei/p/14676699.html
Copyright © 2020-2023  润新知