Collections 工具类
学习排序、查找、同步包装、不可变集合、线程安全集合
Collections 工具类
Collections 提供了大量静态方法操作集合。
学完本章你将: 掌握排序、查找、同步包装、不可变集合。
排序
java
List<Integer> list = new ArrayList<>(List.of(5, 2, 8, 1, 9));
// 默认排序
Collections.sort(list);
System.out.println(list); // [1, 2, 5, 8, 9]
// 自定义排序(降序)
Collections.sort(list, (a, b) -> b - a);
System.out.println(list); // [9, 8, 5, 2, 1]
// 直接对 List 排序
list.sort(Comparator.naturalOrder());
list.sort(Comparator.reverseOrder());
查找
java
List<Integer> list = new ArrayList<>(List.of(1, 3, 5, 7, 9));
// 二分查找(需要先排序)
int index = Collections.binarySearch(list, 5); // 2
// 最大/最小值
System.out.println(Collections.max(list)); // 9
System.out.println(Collections.min(list)); // 1
// 频率
List<String> names = List.of("A", "B", "A", "C");
System.out.println(Collections.frequency(names, "A")); // 2
// 反转、随机打乱
Collections.reverse(list);
Collections.shuffle(list);
线程安全包装
java
// 将非线程安全的集合包装为线程安全
List<String> syncList = Collections.synchronizedList(new ArrayList<>());
Set<String> syncSet = Collections.synchronizedSet(new HashSet<>());
Map<String, String> syncMap = Collections.synchronizedMap(new HashMap<>());
// 迭代需要手动同步
synchronized (syncList) {
for (String s : syncList) {
System.out.println(s);
}
}
不可变集合
java
// 创建不可变集合
List<String> immutableList = Collections.unmodifiableList(
new ArrayList<>(List.of("A", "B", "C"))
);
// immutableList.add("D"); // ❌ UnsupportedOperationException
// Java 9+ 便捷方法
List<String> list = List.of("A", "B", "C");
Set<Integer> set = Set.of(1, 2, 3);
Map<String, Integer> map = Map.of("A", 1, "B", 2);