【Java-集合】说说常见的集合有哪些?

以下是 Java 中最常用的集合分类及核心实现类,按使用频率排序并标注最新版本特性(截至 Java 17):

📦 核心集合分类详解

1️⃣ List 线性表(有序+可重复)

实现类数据结构特点适用场景ArrayList动态数组随机访问快(O(1)),增删慢(需移位)90%+ 的 List 场景首选LinkedList双向链表增删快(O(1)),随机访问慢(O(n))低频随机访问的队列CopyOnWriteArrayList写时复制数组读无锁写加锁,弱一致性读多写少的并发场景

✅ List 选型口诀:无脑选 ArrayList,需高频头尾操作才用 LinkedList。

2️⃣ Set 唯一集(元素不重复)

实现类底层依赖特点使用场景HashSetHashMap哈希表实现,最快查询(O(1))通用去重场景LinkedHashSetLinkedHashMap保留插入顺序需记录顺序的去重TreeSetTreeMap红黑树排序(自然序或自定义 Comparator)需要有序的去重

💡 关键点:

HashSet 允许 1个 null,TreeSet 不允许 null(因需排序)

3️⃣ Map 键值对(Key 唯一)

实现类数据结构特点使用场景HashMap数组+链表/红黑树最高效的键值存储(哈希冲突时转树)99% 的键值存储场景LinkedHashMap链表+哈希表保留插入顺序 或 LRU访问顺序需记录顺序的缓存ConcurrentHashMap分段锁/ CAS高并发安全,性能远优于 Hashtable高并发缓存/计数器TreeMap红黑树Key 自然排序需排序的键值对

⚠️ 注意:

HashMap 允许 1个 null Key,HashTable 已淘汰(用 ConcurrentHashMap 替代)

4️⃣ Queue 队列

实现类特点典型场景ArrayDeque双端循环数组,高效入队出队替代 Stack(更快线程不安全)PriorityQueue堆实现优先级队列任务调度(如定时任务)LinkedBlockingQueue链表阻塞队列,容量可选线程池任务队列

🚀 现代 Java 新增集合(JDK 9+)

不可变集合工厂方法(线程安全+内存高效)

List list = List.of("A", "B"); // 真正不可变!

Set set = Set.of(1, 2);

Map map = Map.of("k1", 1, "k2", 2);

Records 简化数据载体(JDK 16+)

record Point(int x, int y) {} // 自动生成 equals/hashCode

💎 终极选型指南

📌 黄金法则:

List 选 ArrayListSet 选 HashSetMap 选 HashMap

Copyright © 2088 世界杯预选赛中国_1994年世界杯冠军是谁 - nywk120.com All Rights Reserved.
友情链接
Top