【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

上一篇: 达内Java学费多少?
下一篇: 广州和佛山距离有多远?靠诉你什么叫广佛同化,两城之间的零距离

相关推荐

问鼎世界冠军 历城二中女足“能踢能学”的密码在哪里?中国网2023-08-02 16:25:41
苹果6s二手能卖多少钱?详细说明其影响因素
产品宣传片制作攻略:4个步骤搞定动画创作
最新情报>> 井上雄彦《浪客行》决定动画化!
Word高手必备:揭秘查找替换功能的终极技巧大全
web如何切换页面滑动