java - 使用 stream() 和 sorted() 或使用 Collections 方法来反转列表顺序是否更快
问题描述
我试图找出哪个更快:
Collections.reverse(bottlesList);
bottlesList= bottlesList.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());
解决方案
Collections.reverse
是这里唯一的选项,它将基于索引反转元素,关于时间复杂度,它是线性操作。
sorted(Collections.reverseOrder())
将基于 Comparator 排序,因此它将按值而不是索引排序。
简单对比:
List<Integer> list1 = Arrays.asList(4,3,5,7,1);
List<Integer> list2 = Arrays.asList(4,3,5,7,1);
Collections.reverse(list1);
System.out.println(list1);
// Output: [1, 7, 5, 3, 4]
List<Integer> list3 = list2.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());;
System.out.println(list3);
// Output: [7, 5, 4, 3, 1]
推荐阅读
- javascript - 让 Google 跟踪代码管理器 (GTM) 网页浏览等待 spa url 标题
- laravel - 如何在不写入和访问这些值的情况下向数组添加值
- python - 为什么我的反向链接列表的代码只返回第一个节点?
- freebsd - FreeBSD 安装主管
- swiftui - SwiftUI:添加 .searchable 修饰符时选择器未正确显示
- rust - 处理程序中的 Actix-web 和异步 reqwest
- firefox-addon - 一旦在 Mozilla 中可用,如何自动选中选项框
- tibco - 替代 Tibco 抄写员
- php - php调试方法中的所有参数
- git - 如何在丢弃本地更改的同时签出/切换到远程分支并创建本地副本?