You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对集合元素排序:Sorted Stream与列表排序哪种效率更高?

如何用指定Comparator对Collection元素排序并生成列表?

如果你手里有一个Collection<Item>类型的集合,还准备好了对应的Comparator<Item>比较器,想要把集合里的元素按比较器规则排序后得到List<Item>结果,这里有两种非常实用的实现方式:

方法一:传统的列表转换+Collections.sort()

这种是Java早期版本就支持的经典做法,步骤清晰直白:先把集合元素复制到可修改的列表(比如ArrayList),再调用Collections.sort()方法传入列表和比较器完成排序:

Collection<Item> items = ...; 
Comparator<Item> itemComparator = ...;

List<Item> sortedItems = new ArrayList<>(items);
Collections.sort(sortedItems, itemComparator);

这种方法的优势是代码易懂,不需要依赖Stream API,兼容性拉满,适合所有Java版本。

方法二:使用Stream API的sorted()方法

从Java 8开始引入的Stream API提供了更简洁的函数式写法,通过流式操作一步完成排序和列表收集:

Collection<Item> items = ...; 
Comparator<Item> itemComparator = ...;

List<Item> sortedItems = items.stream()
    .sorted(itemComparator)
    .collect(Collectors.toList());

这里stream()将集合转为流,sorted(itemComparator)用指定的比较器对流中元素排序,最后collect(Collectors.toList())把排序后的元素收集成列表。这种写法更优雅,而且全程是无副作用的操作(不会修改原集合)。

内容的提问来源于stack exchange,提问作者lexicore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:06:07