可能重复:
形成和排序正整数数组的最快策略
从未排序的整数迭代中获取排序数组的最快方法是什么?目前,我通过迭代可迭代的 n 次(其中 n 是列表的大小)每次从可迭代中获得最高值并将其放入数组中来做到这一点。但我正在寻找清理它并让一些好的图书馆为我做这件事。
可能我不介意为此目的使用任何流行的库,如 Guava 等。
可能重复:
形成和排序正整数数组的最快策略
从未排序的整数迭代中获取排序数组的最快方法是什么?目前,我通过迭代可迭代的 n 次(其中 n 是列表的大小)每次从可迭代中获得最高值并将其放入数组中来做到这一点。但我正在寻找清理它并让一些好的图书馆为我做这件事。
可能我不介意为此目的使用任何流行的库,如 Guava 等。
它与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);
正如所评论的,最简单且可能最快的方法是填充集合并对其进行排序 - 在这种情况下,我将简单地使用 ArrayList:
List<Integer> sortedList = new ArrayList<>();
for (Integer i : yourIterable) {
sortedList.add(i);
}
Collections.sort(sortedList);
如果您事先知道 Iterable 的大小,则可以使用正确的大小初始化 arraylist 以提高效率:
List<Integer> sortedList = new ArrayList<>(size);