一、类集框架概述
Java类集(Collection Framework)是Java标准库中用于存储和管理对象组的统一架构,位于java.util
包中,提供高性能、可扩展的通用数据结构13。
核心特性:
统一接口:通过Collection
和Map
两大根接口规范操作逻辑,简化开发。
泛型支持:确保类型安全,避免强制类型转换。
动态扩展:自动扩容机制(如ArrayList
)减少手动管理内存的负担。
多场景适配:提供有序、无序、键值对等多种数据存储模型。
二、核心接口与实现类
单列集合(Collection
)
List(有序、可重复)
ArrayList
:基于动态数组实现,支持快速随机访问(O(1)
),但插入/删除需移动元素(O(n)
)。
LinkedList
:基于双向链表实现,插入/删除高效(O(1)
),支持队列和栈操作,但随机访问性能低(O(n)
)。
Vector
:线程安全的动态数组,因同步性能问题已过时,建议使用Collections.synchronizedList()
替代。
Set(无序、唯一)
HashSet
:基于哈希表实现,依赖hashCode()
和equals()
保证元素唯一性,无序存储。
LinkedHashSet
:在HashSet
基础上维护元素插入顺序,适合需保留顺序的去重场景。
TreeSet
:基于红黑树实现,元素按自然顺序或自定义规则排序(需实现Comparable
接口)。
Queue(队列)
ArrayDeque
:基于循环数组的双端队列,支持高效头尾操作。
PriorityQueue
:基于堆结构实现,元素按优先级排序,适用于任务调度场景。
双列集合(Map
)
HashMap
:基于哈希表实现,允许null
键/值,非线程安全,适用于快速键值查询。
LinkedHashMap
:在HashMap
基础上维护插入顺序或访问顺序,适合缓存淘汰策略(如LRU)。
Hashtable
:线程安全的哈希表,已过时,推荐使用ConcurrentHashMap
替代。
TreeMap
:基于红黑树实现,键按自然顺序或自定义规则排序,适合范围查询场景。
三、最佳实践与优化建议
线程安全选择
单线程优先使用非同步集合(如ArrayList
、HashMap
)以提高性能48。
多线程场景使用ConcurrentHashMap
(替代Hashtable
)或CopyOnWriteArrayList
(替代Vector
)48。
初始化优化
预估容量初始化集合(如new ArrayList<>(100)
),减少动态扩容开销46。
遍历方式
优先使用迭代器(Iterator
)或增强for
循环遍历集合,避免在遍历中直接修改结构68。
对HashMap
遍历推荐使用entrySet()
,避免多次哈希计算