3

可能重复:
形成和排序正整数数组的最快策略

从未排序的整数迭代中获取排序数组的最快方法是什么?目前,我通过迭代可迭代的 n 次(其中 n 是列表的大小)每次从可迭代中获得最高值并将其放入数组中来做到这一点。但我正在寻找清理它并让一些好的图书馆为我做这件事。

可能我不介意为此目的使用任何流行的库,如 Guava 等。

4

2 回答 2

7

它与assylias已经提供的答案基本相同,但如果您在类路径中有 Google Guava,您可以将其缩短为:

import java.util.Collections;
import java.util.List;

import com.google.common.collect.Lists;

...

List list = Lists.newArrayList(iterable);
Collections.sort(list);
于 2012-11-02T14:32:53.677 回答
1

正如所评论的,最简单且可能最快的方法是填充集合并对其进行排序 - 在这种情况下,我将简单地使用 ArrayList:

List<Integer> sortedList = new ArrayList<>();
for (Integer i : yourIterable) {
    sortedList.add(i);
}
Collections.sort(sortedList);

如果您事先知道 Iterable 的大小,则可以使用正确的大小初始化 arraylist 以提高效率:

List<Integer> sortedList = new ArrayList<>(size);
于 2012-11-02T13:56:43.600 回答