Java容器类全解析:Collection与Map
Java 容器类全面整理(Collection + Map)
在 Java 开发中,容器类(Collection Framework)用于存储和管理对象集合,是日常开发中最常使用的工具之一。
Java 容器框架主要分为两大体系:
-
Collection体系:存储单个元素
-
Map体系:存储键值对(key-value)
一、Java 容器整体结构
Collection体系

Map体系

二、Collection 接口
Collection 是所有单列集合的父接口。
常见方法:
add(E e) //添加元素 remove(Object o)//删除元素 size() //集合大小 isEmpty() //是否为空 contains(Object o)//是否包含 clear() //清空 iterator() //迭代器
Collection 主要分为两大类:
-
List(有序可重复)
-
Set(无序不可重复)
三、List 集合(有序,可重复)
List 特点:
-
元素有顺序
-
元素可以重复
-
支持索引访问
常见实现类:
类 特点
ArrayList 底层数组 LinkedList 底层双向链表 Vector 线程安全
1 ArrayList
特点:
-
底层:动态数组
-
查询快
-
增删慢
示例:
List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); System.out.println(list.get(1));
扩容机制:
默认容量:10
扩容公式:
newCapacity = oldCapacity + oldCapacity/2
2 LinkedList
特点:
-
底层:双向链表
-
插入删除快
-
查询慢
结构:
A <-> B <-> C <-> D
3 Vector
特点:
-
线程安全
-
性能较低
-
基本被 ArrayList 取代
四、Set 集合(无序,不可重复)
Set 特点:
-
元素不能重复
-
没有索引
-
判断重复依赖 hashCode() 和 equals()
常见实现类:
类 特点
HashSet 哈希表 LinkedHashSet 有序 TreeSet 排序
HashSet
特点:
-
底层:HashMap
-
无序
-
不能重复
去重原理:
-
先比较 hashCode()
-
再比较 equals()
LinkedHashSet
特点:
-
保持插入顺序
-
底层:HashSet + 链表
TreeSet
特点:
-
自动排序
-
底层:红黑树
五、Map 集合(键值对)
Map 用来存储:
key -> value
特点:
-
key 不能重复
-
value 可以重复
常见实现类:
类 特点
HashMap 最常用
LinkedHashMap 有序
TreeMap 排序
Hashtable 线程安全
HashMap
特点:
-
key 不重复
-
允许一个 null key
-
线程不安全
底层结构:
JDK7:数组 + 链表\ JDK8:数组 + 链表 + 红黑树
默认参数:
-
初始容量:16
-
负载因子:0.75
扩容条件:
size > capacity * 0.75
LinkedHashMap
特点:
-
保证插入顺序
-
底层:HashMap + 双向链表
TreeMap
特点:
-
按 key 排序
-
底层:红黑树
六、常见容器对比
集合 底层结构 特点
ArrayList 数组 查询快
LinkedList 双向链表 增删快
HashSet HashMap 去重
TreeSet 红黑树 排序
HashMap 数组+链表+红黑树 最常用
TreeMap 红黑树 key排序
七、如何选择容器
查询多:
ArrayList\ HashMap
增删多:
LinkedList
需要去重:
HashSet
需要排序:
TreeSet\ TreeMap
需要保持顺序:
LinkedHashSet\ LinkedHashMap
八、面试高频问题
ArrayList 和 LinkedList 区别
ArrayList LinkedList
数组 链表 查询快 查询慢 增删慢 增删快
HashMap 为什么快
原因:
利用 hash 直接定位数组位置,减少遍历。
平均时间复杂度:
O(1)
HashMap 为什么引入红黑树
当哈希冲突严重时链表会变长,查询效率下降。
JDK8 优化:
当链表长度 > 8 时转换为红黑树。
查询复杂度:
O(log n)
九、总结
Java 容器框架核心思想:
List -> 有序可重复\ Set -> 无序不重复\ Map -> 键值对
开发中最常用集合:
-
ArrayList
-
HashSet
-
HashMap
理解底层结构、时间复杂度和使用场景,对于写高效代码和技术面试都非常重要。
更多推荐

所有评论(0)