3.0 KiB
3.0 KiB
集合框架
集合体系结构
Java集合框架主要分为两大类:
-
Collection接口:存储单值
- List:有序、可重复
- Set:无序、不可重复
- Queue:队列
-
Map接口:存储键值对
List集合
ArrayList
基于动态数组实现,查询快,增删慢。
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
基于链表实现,增删快,查询慢。
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
基于哈希表实现,无序、不可重复。
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
基于红黑树实现,自动排序。
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
基于哈希表实现,键不可重复。
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
基于红黑树实现,键自动排序。
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));
集合工具类
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));