LinkedHashSet
# 前言
Java
集合可分为Collection
和Map
两种体系:
Collection
接口:单列数据,定义了存取一组对象的方法的集合List
:元素有序、可重复的集合ArrayList
、LinkedList
、Vector
Set
:元素无序、不可重复的集合HashSet
、LinkedHashSet
、TreeSet
Map
接口:双列数据,保存具有映射关系“key-value对
”的集合,也称为键值对。HashMap
、LinkedHashMap
、TreeMap
、Hashtable
、Properties
接下来学习Set接口的实现类LinkedHashSet
# 概述
- LinkedHashSet是HashSet的子类
- LinkedHashSet根据元素的hashCode值来决定元素的存储位置,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
- LinkedHashSet插入性能略低于HashSet,但在迭代访问Set 里的全部元素时有很好的性能。
- LinkedHashSet不允许集合元素重复。
# 底层
这么看来LinkedHashSet和HashSet的底层都差不多,只是用了双向链表来指向元素的位置。
# 顺序
什么时候维护元素的次序?
在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个元素和后一个元素。所以LinkedHashSet插入性能略低于HashSet。
比如:
AA是第一个添加的,所以前一个元素为null,后面一个元素是456……
既然LinkedHashSet知道了元素的位置,那么遍历的时候,也就是迭代访问Set 里的全部元素时有很好的性能。
帮我改善此页面 (opens new window)
上次更新: 2020/12/27, 05:00:47