🟦 Java 集合框架详解

1️⃣ 什么是 Java 集合框架?

  • 集合框架是 Java 提供的一套统一的数据结构接口 + 实现类,用于存储、操作一组对象。
  • 提供标准化方法,避免开发者重复造轮子。
  • 核心特点:可扩展、统一、灵活、高效

优点

  1. 提高代码复用性。
  2. 提供统一接口,易于替换实现。
  3. 内置算法(排序、查找等),简化开发。

2️⃣ 集合框架体系结构

                     Collection<E>(集合根接口)
                      /           \
          List<E>(列表)         Set<E>(集合)
           /      \                /       \
 ArrayList<E>  LinkedList<E>   HashSet<E>   TreeSet<E>
           \                         /
         Vector<E>               LinkedHashSet<E>

Map<K,V>(映射接口,独立于 Collection)
     /          \
HashMap<K,V>  TreeMap<K,V>
     \
 LinkedHashMap<K,V>

  • Collection 接口:存储一组对象的单列集合。
    • List:有序,可重复,如 ArrayList, LinkedList, Vector
    • Set:无序,不重复,如 HashSet, TreeSet, LinkedHashSet
  • Map 接口:存储 键值对(key-value),key 不重复,如 HashMap, TreeMap

3️⃣ Collection 接口常用方法

方法说明
add(E e)添加元素
remove(Object o)删除元素
contains(Object o)判断是否包含元素
size()集合元素数量
isEmpty()判断集合是否为空
clear()清空集合
iterator()获取迭代器

示例(List)

import java.util.ArrayList;
import java.util.List;

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println(list.size()); // 2
System.out.println(list.contains("A")); // true

示例(Set)

import java.util.HashSet;
import java.util.Set;

Set<String> set = new HashSet<>();
set.add("A");
set.add("A"); // 重复,不会加入
System.out.println(set.size()); // 1


4️⃣ Map 接口常用方法

方法说明
put(K key, V value)添加或更新元素
get(Object key)获取 key 对应的 value
remove(Object key)删除 key
containsKey(Object key)判断 key 是否存在
containsValue(Object value)判断 value 是否存在
keySet()获取所有 key
values()获取所有 value
entrySet()获取所有键值对
import java.util.HashMap;
import java.util.Map;

Map<String, Integer> map = new HashMap<>();
map.put("Alice", 20);
map.put("Bob", 25);

System.out.println(map.get("Alice")); // 20
System.out.println(map.containsKey("Bob")); // true


5️⃣ List 常用实现类对比

底层结构特点适用场景
ArrayList动态数组随机访问快,增删慢查询多
LinkedList双向链表插入删除快,随机访问慢插入删除多
Vector动态数组线程安全(同步方法),较慢老旧项目
Stack(继承 Vector)先进后出特殊栈操作

6️⃣ Set 常用实现类对比

底层结构特点适用场景
HashSet哈希表无序、不重复,查询快去重、查找
LinkedHashSet哈希 + 链表保证插入顺序需要顺序的去重
TreeSet红黑树有序、不重复排序需求集合

7️⃣ Map 常用实现类对比

底层结构特点适用场景
HashMap哈希表无序,key 唯一快速查找
LinkedHashMap哈希 + 链表保证插入顺序需要顺序的映射
TreeMap红黑树按 key 排序排序映射
Hashtable哈希表线程安全(同步方法)老旧项目

8️⃣ 遍历集合

(1)List / Set 遍历

List<String> list = List.of("A", "B", "C");

// 增强 for 循环
for (String s : list) { System.out.println(s); }

// Iterator
import java.util.Iterator;
Iterator<String> it = list.iterator();
while (it.hasNext()) { System.out.println(it.next()); }

// Java 8 Lambda
list.forEach(System.out::println);

(2)Map 遍历

Map<String, Integer> map = Map.of("Alice", 20, "Bob", 25);

// 遍历 key
for (String key : map.keySet()) { System.out.println(key); }

// 遍历 value
for (Integer value : map.values()) { System.out.println(value); }

// 遍历 entry
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " -> " + entry.getValue());
}


9️⃣ 集合常用工具类:Collections

  • 排序、查找、线程安全包装等
import java.util.ArrayList;
import java.util.Collections;

ArrayList<Integer> list = new ArrayList<>();
list.add(5);
list.add(2);
list.add(9);

Collections.sort(list); // 升序排序
Collections.reverse(list); // 反转
System.out.println(Collections.max(list)); // 最大值
System.out.println(Collections.min(list)); // 最小值


10️⃣ 总结

  • Collection:存储单列数据
    • List:有序,可重复
    • Set:无序,不重复
  • Map:存储键值对
  • 常用方法:增删改查、遍历、排序
  • 选择建议
    • 查询多 → ArrayList / HashMap
    • 插入删除多 → LinkedList / LinkedHashMap
    • 需要排序 → TreeSet / TreeMap