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