当前位置: 首页 > news >正文

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等并发集合。

相关文章:

  • Systemd安全加密备份系统与智能通知
  • 深信服Python开发面经及参考答案(110道题)
  • 第十四届蓝桥杯省赛真题解析(含C++详细源码)
  • 常见框架漏洞(五)----中间件IIS6
  • 罗米:《俄罗斯博物馆之旅》
  • 【C++11】异常
  • C语言学习笔记-9
  • Redis-x64-3.2.100.msi : Windows 安装包(MSI 格式)安装步骤
  • MessageQueue --- RabbitMQ可靠传输
  • [项目总结] 在线OJ刷题系统项目技术应用(下)
  • 同花顺客户端公司财报抓取分析
  • 【AI Infra】【RLHF框架】四、VeRL中PPO、GRPO、REINFORCE++、RLOO实现源码解析
  • Spring 怎么解决循环依赖问题?
  • 室内指路机器人是否支持与第三方软件对接?
  • 2025年渗透测试面试题总结-某四字大厂面试复盘扩展 二面 (题目+回答)
  • JavaScript 中的 Reflect 详解
  • notepad++8.6.4安装及细节
  • 【Python Cookbook】数字日期和时间(一)
  • unity的dots中instantiate克隆对象后,对象会在原位置闪现的原因和解决
  • 吉卜力动画风格图像生成:Ghibli Diffusion
  • 江苏建设监理协会网站/小红书关键词优化
  • seo是网站搜索引擎上的优化/百度渠道开户
  • 综合门户网站建设方案/开封网站推广
  • 平易云 网站建设/搜索引擎调价工具哪个好
  • 璧山网站建设/友链交易平台
  • 如何做网站滚动屏幕/google官方下载安装