Files
home/docs/java/collection.md
2026-05-13 16:24:00 +08:00

176 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 集合框架
## 集合体系结构
Java集合框架主要分为两大类
1. **Collection接口**:存储单值
- List有序、可重复
- Set无序、不可重复
- Queue队列
2. **Map接口**:存储键值对
## List集合
### ArrayList
基于动态数组实现,查询快,增删慢。
```java
import java.util.ArrayList;
import java.util.List;
List<String> 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<String> 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<String> 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<Integer> 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<String, Integer> 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<String, Integer> 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<Integer, String> 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<Integer> 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));
```