在Java中,java.util.Collections
是一个工具类,提供了大量静态方法用于操作或返回集合(如List
、Set
、Map
等)。以下是常用的API分类整理:
1. 排序与顺序操作
-
sort(List<T> list)
对List
进行自然顺序排序(元素需实现Comparable
接口)。List<Integer> list = Arrays.asList(3, 1, 2); Collections.sort(list); // [1, 2, 3]
-
sort(List<T> list, Comparator<? super T> c)
自定义排序规则。Collections.sort(list, (a, b) -> b - a); // 降序
-
reverse(List<?> list)
反转列表顺序。Collections.reverse(list); // [2, 1, 3]
-
shuffle(List<?> list)
随机打乱列表顺序(常用于洗牌算法)。
2. 查找与极值
-
binarySearch(List<? extends Comparable<? super T>> list, T key)
二分查找(列表必须已排序)。int index = Collections.binarySearch(list, 2); // 返回索引
-
max(Collection<? extends T> coll)
/min(...)
返回集合中的最大/最小值(自然顺序或通过Comparator
)。
3. 不可变集合(安全封装)
-
unmodifiableXxx()
返回不可变集合视图(如unmodifiableList
、unmodifiableSet
),修改会抛异常。List<String> unmodifiable = Collections.unmodifiableList(originalList);
-
singleton(T o)
/emptyList()
/emptySet()
返回单元素或空集合(不可变)。
4. 同步控制(线程安全)
synchronizedXxx()
返回线程安全的集合包装(如synchronizedList
、synchronizedMap
)。List<String> syncList = Collections.synchronizedList(new ArrayList<>());
5. 填充与替换
-
fill(List<? super T> list, T obj)
用指定对象填充所有元素。Collections.fill(list, 0); // [0, 0, 0]
-
replaceAll(List<T> list, T oldVal, T newVal)
替换所有匹配元素。
6. 其他实用方法
-
frequency(Collection<?> c, Object o)
统计元素出现次数。int count = Collections.frequency(list, "Java");
-
disjoint(Collection<?> c1, Collection<?> c2)
检查两个集合是否无交集。 -
addAll(Collection<? super T> c, T... elements)
批量添加元素到集合。
注意事项
- 性能:部分方法(如
sort
)会修改原集合,需注意副作用。 - 线程安全:
synchronizedXxx()
是粗粒度锁,高并发场景推荐用ConcurrentHashMap
等并发集合。