java.util.Collections中常用api

在Java中,java.util.Collections 是一个工具类,提供了大量静态方法用于操作或返回集合(如ListSetMap等)。以下是常用的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()
    返回不可变集合视图(如unmodifiableListunmodifiableSet),修改会抛异常。

    List<String> unmodifiable = Collections.unmodifiableList(originalList);
    
  • singleton(T o) / emptyList() / emptySet()
    返回单元素或空集合(不可变)。


4. 同步控制(线程安全)

  • synchronizedXxx()
    返回线程安全的集合包装(如synchronizedListsynchronizedMap)。
    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等并发集合。

猜你喜欢

转载自blog.csdn.net/qq_56851614/article/details/147025131