Z
ZHANK
编程在线教程Java 教程Collections 工具类
集合框架进阶

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);