List、Set、Map常用类区别与联系

来源:互联网 发布:上证指数数据成交量 编辑:程序博客网 时间:2024/05/16 11:30
List
有序 collection
允许重复元素
允许null元素
ArrayList
有序 collection(内部通过数组实现)
允许重复元素
允许null元素
非同步
Vector
有序 collection(内部通过数组实现)
允许重复元素
允许null元素
同步
LinkedList
有序 collection(内部通过双向链表实现)
允许重复元素
允许null元素
非同步

Set
最多包含一个 null 元素
不包含重复元素的 collection(更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2)
HashSet
最多包含一个 null 元素
不包含重复元素的 collection(更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2)
不保证 set 的迭代顺(特别是它不保证该顺序恒久不变)
非同步
LinkedHashSet
最多包含一个 null 元素
不包含重复元素的 collection(更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2)
可预知迭代顺序(维护着一个运行于所有条目的双重链接列表,此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序)
非同步
TreeSet
不允许包含 null 元素
不包含重复元素的 collection(更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2)
自然顺序进行排序
非同步

Map
键值对
HashMap
允许将 null 用作值或键(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)
不保证映射的顺序,特别是它不保证该顺序恒久不变
非同步
LinkedHashMap
允许将 null 用作值或键
具有可预知的迭代顺序(维护着一个运行于所有条目的双重链接列表,此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序)
非同步
ConcurrentHashMap
不允许将 null 用作键或值
不保证映射的顺序,特别是它不保证该顺序恒久不变
支持获取的完全并发和更新的所期望可调整并发的哈希表
同步(桶Lock锁)
TreeMap
仅允许将 null 用作值,但不允许其作为键
自然顺序进行排序(基于红黑树的 NavigableMap 实现)
非同步
Hashtable
不允许将 null 用作值或键
不保证映射的顺序
同步(整个hash表锁)
0 0
原创粉丝点击