# 集合框架 ## 集合体系结构 Java集合框架主要分为两大类: 1. **Collection接口**:存储单值 - List:有序、可重复 - Set:无序、不可重复 - Queue:队列 2. **Map接口**:存储键值对 ## List集合 ### ArrayList 基于动态数组实现,查询快,增删慢。 ```java import java.util.ArrayList; import java.util.List; List list = new ArrayList<>(); // 添加元素 list.add("Java"); list.add("Python"); list.add("JavaScript"); // 获取元素 System.out.println(list.get(0)); // Java // 遍历 for (String item : list) { System.out.println(item); } // 删除元素 list.remove("Python"); // 集合大小 System.out.println(list.size()); // 2 ``` ### LinkedList 基于链表实现,增删快,查询慢。 ```java import java.util.LinkedList; LinkedList linkedList = new LinkedList<>(); linkedList.addFirst("第一"); linkedList.addLast("最后"); linkedList.add("中间"); System.out.println(linkedList.getFirst()); // 第一 System.out.println(linkedList.getLast()); // 最后 ``` ## Set集合 ### HashSet 基于哈希表实现,无序、不可重复。 ```java import java.util.HashSet; import java.util.Set; Set set = new HashSet<>(); set.add("Apple"); set.add("Banana"); set.add("Apple"); // 重复元素不会被添加 System.out.println(set.size()); // 2 System.out.println(set.contains("Apple")); // true ``` ### TreeSet 基于红黑树实现,自动排序。 ```java import java.util.TreeSet; Set treeSet = new TreeSet<>(); treeSet.add(5); treeSet.add(1); treeSet.add(3); // 输出:1, 3, 5(自动排序) for (Integer num : treeSet) { System.out.println(num); } ``` ## Map集合 ### HashMap 基于哈希表实现,键不可重复。 ```java import java.util.HashMap; import java.util.Map; Map map = new HashMap<>(); // 添加键值对 map.put("Java", 1); map.put("Python", 2); map.put("JavaScript", 3); // 获取值 System.out.println(map.get("Java")); // 1 // 遍历 for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } // 判断键是否存在 System.out.println(map.containsKey("Java")); // true // 删除 map.remove("Python"); ``` ### TreeMap 基于红黑树实现,键自动排序。 ```java import java.util.TreeMap; Map treeMap = new TreeMap<>(); treeMap.put(3, "C"); treeMap.put(1, "A"); treeMap.put(2, "B"); // 按键排序输出:1=A, 2=B, 3=C treeMap.forEach((k, v) -> System.out.println(k + "=" + v)); ``` ## 集合工具类 ```java import java.util.Collections; import java.util.ArrayList; import java.util.List; List numbers = new ArrayList<>(); numbers.add(3); numbers.add(1); numbers.add(2); // 排序 Collections.sort(numbers); // [1, 2, 3] // 反转 Collections.reverse(numbers); // [3, 2, 1] // 打乱 Collections.shuffle(numbers); // 最大最小值 System.out.println(Collections.max(numbers)); System.out.println(Collections.min(numbers)); ```