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

时间:2012-11-02 13:04:09

标签: java

  

可能重复:
  Fastest strategy to form and sort an array of positive integers

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

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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);