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、

四、

原文地址:https://www.cnblogs.com/niujifei/p/14676699.html