Java源码学习之LinkedHashSet

LinkedHashSet

  • LinkedHashSet类图
  • LinkedHashSet概述
  • LinkedHashSet的实现

LinkedHashSet类图

Java源码学习之LinkedHashSet_第1张图片

LinkedHashSet概述

  • 与HashSet主要不同在于,LinkedHashSet维护了一个双链表,并且还定义了迭代顺序,迭代的顺序即为插入的顺序。
  • Note:在LinkedHashSet中,插入顺序不会受到重复插入的影响。(在插入之前,会先判断集合中是否包含该值)
  • 提供常数时间操作的有:基本操作(add,contains,remove)跟HashSet一样
  • add操作,LinkedHashSet性能比HashSet稍微要低一些,因为要维护链表。
  • 迭代LinkedHashSet所需的时间与LinkedHashSet的size成比例,而迭代HashSet所需的时间与HashSet的容量capacity成比例。
  • 影响LinkedHashSet的性能的两个因素:初始容量init capacity和加载因子loadFactor

LinkedHashSet的实现

借用HashSet的构造方法,创建LinkedHashMap来实现。即,HashSet的三参构造就是为了LinkedHashSet而服务的,而HashSet的实现是借用HashMap来实现的。

你可能感兴趣的:(Java,java)