java - Java:使用非标准比较器对 int[] 进行 Arrays.parallelSort
问题描述
对于当前的实现,我使用整数数组 Integer[] 来使用外部比较器。顺序不是“自然的”顺序,而是外部定义的顺序。
Arrays.parallelSort(Integer[] array, Comparator<T> cmp);
有没有办法将 parallelSort 与整数数组、int[] 和用户定义的比较器一起使用?
相反,类似:
Arrays.parallelSort(int[] array, IntComparator cmp);
性能是问题(想想你是否有 10mio 整数)
解决方案
Arrays.parallelSort(...)
如果您想在整数数组上使用带有标准 Java SE 方法的自定义比较器,那么它必须是 anInteger[]
而不是int[]
.
这是一个示例(未经测试/基于https://stackoverflow.com/a/33045466/139985)
int[] ia = {99, 11, 7, 21, 4, 2};
ia = Arrays.stream(ia).
boxed().
parallel().
sorted((a, b) -> b.compareTo(a)). // sort descending
mapToInt(i -> i).
toArray();
int[]
使用流Integer
来回转换。
使用 3rd 方库还有其他各种替代方案:
不幸的是,上述问题的答案都没有使用并行排序,但可能有替代方案。
推荐阅读
- c++ - 使用 MSVC 的模块中的访问冲突
- python - 将 PySpark Dataframe 列拆分为多个
- ios - Are there recommended ways for drawing 2d array in fast time?
- node.js - 在heroku中创建(克隆)相同的应用程序进行开发
- python - 无论 django 中的用户如何,都从数据库中获取最新对象
- php - PHP 中的空格错误,需要标识符
- arrays - 通过将它们合并为一个数组在同一页面上显示两个数组 - 反应原生
- arrays - 如何追加到 JSONB 列中的嵌套数组
- sql - SQL 删除给定字符串之前的文本(将 URL 缩短为 URL 路径)
- ios - 成功初始化数据MVVM时应用程序崩溃