Java Set 之 LinkedHashSet (JDK1.8)学习笔记

181 阅读1分钟

Java 集合框架之 Set 系列

LinkedHashSet 学习总结 - 基于JDK1.8

继承关系:

LinkedHashSet实际上是继承了HashSet实现的

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

它的内部实现map就不再是HashSet中设置的HashMap
而是HashSet中设置的LinkedHashMap 以无参构造为例:

public LinkedHashSet() {
        // 所有构造方法在调用父类HashSet的构造方法时都将最后一个参数设置为true
        super(16, .75f, true);
    }
    
// 实际调用的一定是HashSet的这个构造方法
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
        // 可见HashSet中的Map不再是HashMap而是使用的LinkedHashMap
        map = new LinkedHashMap<>(initialCapacity, loadFactor);
    }

总结:
LinkedHashSet的实现实际是LinkedHashMap,它是有序的,不可重复的单列Set集合
对于HashSet和LinkedHashSet的底层实现应该重点关注与HashMap和LinkedHashMap,就不再此处赘述了