并行排序列表,而无需在 Java 8 中创建临时数组
Java 8 提供了 java.util.Arrays.parallelSort
,它使用 fork-join 框架对数组进行并行排序。但是没有相应的排序列表。Collections.parallelSort
我可以使用 ,对该数组进行排序,并将结果存储回我的列表中,但这会暂时增加内存使用量,如果我使用并行排序,这已经很高了,因为并行排序只对巨大的列表有回报。我没有使用两倍的内存(列表加上parallelSort的工作内存),而是使用三倍(列表,临时数组和parallelSort的工作内存)。(Arrays.parallelSort 文档说“该算法需要的工作空间不大于原始数组的大小”。toArray
撇开内存使用不谈,Collections.parallelSort 对于看似相当常见的操作来说也更方便。(我倾向于不直接使用数组,所以我肯定会比Arrays.parallelSort更频繁地使用它。
该库可以测试RandomAccess,以避免尝试对链接列表进行快速排序,因此这不能成为故意遗漏的理由。
如何在不创建临时数组的情况下对列表进行并行排序?