zoukankan      html  css  js  c++  java
  • 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、

    四、

  • 相关阅读:
    xcode中的udp接收数据
    FMX.MEDIA中的录音功能实现
    DELPHI XE功能
    xcode 中运用lame进行caf文件到mp3文件的转换
    xcode中用AVAudioRecorder录音到指定的caf文件
    enum 在c中的使用(枚举类型)
    c语言中typedef的几种用法
    pta 两个有序链表序列的交集
    Level-order Traversal(c语言函数指针样例)
    求二叉树高度
  • 原文地址:https://www.cnblogs.com/niujifei/p/14676699.html
Copyright © 2011-2022 走看看