从Iterable整数中获取排序数组的最快方法

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

从未排序的整数迭代中获取排序数组的最快方法是什么? 目前,我每次迭代迭代n次(其中n是列表的大小),每次从迭代中获得最高值并将其放入数组中。 但是我想要清理它并让一些好的库为我做这件事。

可能我不介意为此目的使用像番石榴等任何流行的库。

评论说,最简单也可能最快的方法是填充集合并对其进行排序 – 在这种情况下我只需使用ArrayList:

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

如果您事先知道您的Iterable的大小,您可以使用正确的大小初始化arraylist以获得额外的效率增益:

 List sortedList = new ArrayList<>(size); 

这与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);