Java Collections工具类 #
一、Collections概述 #
Collections是Java提供的集合操作工具类,提供静态方法操作集合。
二、排序操作 #
2.1 sort排序 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9));
// 自然排序
Collections.sort(list);
System.out.println(list); // [1, 1, 3, 4, 5, 9]
// 自定义排序
Collections.sort(list, (a, b) -> b - a); // 降序
System.out.println(list); // [9, 5, 4, 3, 1, 1]
2.2 reverse反转 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.reverse(list);
System.out.println(list); // [5, 4, 3, 2, 1]
2.3 shuffle打乱 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.shuffle(list);
System.out.println(list); // 随机顺序
2.4 swap交换 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.swap(list, 0, 4); // 交换索引0和4的元素
System.out.println(list); // [5, 2, 3, 4, 1]
2.5 rotate旋转 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.rotate(list, 2); // 向右旋转2位
System.out.println(list); // [4, 5, 1, 2, 3]
三、查找操作 #
3.1 binarySearch二分查找 #
java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// 必须先排序
int index = Collections.binarySearch(list, 3);
System.out.println(index); // 2
// 未找到返回负数
int index2 = Collections.binarySearch(list, 6);
System.out.println(index2); // -6
3.2 max/min #
java
List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9);
System.out.println(Collections.max(list)); // 9
System.out.println(Collections.min(list)); // 1
// 自定义比较
System.out.println(Collections.max(list, Comparator.reverseOrder())); // 1
3.3 frequency频率 #
java
List<Integer> list = Arrays.asList(1, 2, 2, 3, 3, 3);
int count = Collections.frequency(list, 3);
System.out.println(count); // 3
3.4 indexOfSubList #
java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> subList = Arrays.asList(3, 4);
int index = Collections.indexOfSubList(list, subList);
System.out.println(index); // 2
四、填充和复制 #
4.1 fill填充 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.fill(list, 0);
System.out.println(list); // [0, 0, 0, 0, 0]
4.2 copy复制 #
java
List<Integer> src = Arrays.asList(1, 2, 3);
List<Integer> dest = Arrays.asList(4, 5, 6);
Collections.copy(dest, src);
System.out.println(dest); // [1, 2, 3]
4.3 addAll批量添加 #
java
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5);
System.out.println(list); // [1, 2, 3, 4, 5]
4.4 nCopies创建不可变列表 #
java
List<Integer> list = Collections.nCopies(5, 1);
System.out.println(list); // [1, 1, 1, 1, 1]
五、不可变集合 #
5.1 unmodifiableList #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> unmodifiable = Collections.unmodifiableList(list);
// unmodifiable.add(4); // UnsupportedOperationException
5.2 其他不可变集合 #
java
Set<Integer> set = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(1, 2, 3)));
Map<String, Integer> map = Collections.unmodifiableMap(new HashMap<>());
5.3 emptyXXX空集合 #
java
List<String> emptyList = Collections.emptyList();
Set<String> emptySet = Collections.emptySet();
Map<String, String> emptyMap = Collections.emptyMap();
5.4 singleton单元素集合 #
java
Set<String> set = Collections.singleton("A");
List<String> list = Collections.singletonList("A");
Map<String, String> map = Collections.singletonMap("A", "1");
六、同步集合 #
6.1 synchronizedList #
java
List<String> list = new ArrayList<>();
List<String> syncList = Collections.synchronizedList(list);
// 线程安全的List
syncList.add("A");
6.2 其他同步集合 #
java
Set<String> syncSet = Collections.synchronizedSet(new HashSet<>());
Map<String, String> syncMap = Collections.synchronizedMap(new HashMap<>());
七、其他操作 #
7.1 disjoint判断不相交 #
java
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(4, 5, 6);
boolean noCommon = Collections.disjoint(list1, list2);
System.out.println(noCommon); // true
7.2 replaceAll替换 #
java
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "A"));
Collections.replaceAll(list, "A", "C");
System.out.println(list); // [C, B, C]
7.3 reverseOrder逆序比较器 #
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.sort(list, Collections.reverseOrder());
System.out.println(list); // [5, 4, 3, 2, 1]
八、总结 #
| 方法 | 说明 |
|---|---|
| sort | 排序 |
| reverse | 反转 |
| shuffle | 打乱 |
| binarySearch | 二分查找 |
| max/min | 最大/最小值 |
| fill | 填充 |
| copy | 复制 |
| unmodifiableXXX | 创建不可变集合 |
| synchronizedXXX | 创建同步集合 |
Collections要点:
- 提供丰富的静态方法
- 排序、查找、填充等操作
- 创建不可变和同步集合
- 配合Comparator实现自定义排序
最后更新:2026-03-26