集合类继承结构图
Collection
|
---------------------
| | |
Set List Queue
| | |
SortedSet ArrayList Deque
| LinkedList |
NavigableSet Vector ArrayDeque
| Stack |
TreeSet LinkedList
|
PriorityQueue
Map
|
-----------------
| |
SortedMap ConcurrentMap
| |
NavigableMap ConcurrentHashMap
|
TreeMap
|
HashMap
|
LinkedHashMap
详细说明
-
Collection 接口 是所有集合的根接口,它提供了对集合对象进行基本操作的方法。
Set
,List
, 和Queue
是Collection
接口的三个主要子接口。 -
Set 接口:一个不包含重复元素的集合。
-
SortedSet
:保证集合中的元素处于排序状态。 NavigableSet
:提供了导航方法。TreeSet
:基于红黑树实现的 NavigableSet。
-
List 接口:一个有序集合,可以包含重复元素。
ArrayList
:基于动态数组实现的 List。LinkedList
:基于双向链表实现的 List,也实现了Deque
接口。Vector
:同步的动态数组。Stack
:后进先出 (LIFO) 的栈。
-
Queue 接口:通常用于按顺序处理元素。
Deque
:双端队列,可以从两端添加和移除元素。ArrayDeque
:基于动态数组实现的 Deque。LinkedList
:也实现了Deque
接口。
PriorityQueue
:基于优先级堆的队列。
-
Map 接口:用于存储键值对映射,不属于
Collection
接口的子接口。SortedMap
:保证键处于排序状态。NavigableMap
:提供了导航方法。TreeMap
:基于红黑树实现的 NavigableMap。
ConcurrentMap
:提供线程安全的并发映射。ConcurrentHashMap
:高效的并发哈希映射。
HashMap
:基于哈希表实现的 Map。LinkedHashMap
:维护元素插入顺序或访问顺序的 HashMap。
总结
在Java集合框架中,线程安全和有序性是两个重要的概念。线程安全表示一个类的实例可以安全地被多个线程访问而不会产生数据不一致的情况,而有序性则表示集合中的元素是否可以按照某种顺序进行访问或遍历。下表总结了Java集合框架中常见类的线程安全性和有序性:
需要注意的是,虽然HashTable和ConcurrentHashMap都是线程安全的,但是ConcurrentHashMap通过分段锁实现更好的并发性能,推荐在多线程环境中使用。另外,ArrayList和LinkedList都是有序的,但是它们的内部实现和性能特点有所不同,需要根据具体的需求进行选择。