您可以使用自定義比較器在您認爲合適的任何方式列表元素進行排序。
final List<Element<Integer, Integer>> list = new ArrayList<Element<Integer, Integer>>();
list.add(new Element<Integer, Integer>(1, 1));
list.add(new Element<Integer, Integer>(4, 4));
list.add(new Element<Integer, Integer>(3, 3));
list.add(new Element<Integer, Integer>(2, 2));
list.add(new Element<Integer, Integer>(5, 5));
Collections.sort(list, new Comparator<Element<Integer, Integer>>() {
@Override
public int compare(final Element<Integer, Integer> x,
final Element<Integer, Integer> y) {
return x.getPriority().compareTo(y.getPriority());
}
});
// Prints elements in ascending order of priority
System.out.println(Arrays.toString(list.toArray()));
什麼只是把它在一個數組和使用Arrays.sort()呢? – 2012-04-26 05:04:05
那麼,除非你知道原始列表的大小(你說你只有一個迭代器),否則你不能將它們放入數組中。您可以將它們添加到列表中,然後對其進行排序;我認爲這相當於將它們添加到PriorityQueue ... – ykaganovich 2012-04-26 05:18:50
是的,但實際上我確實知道大小不知何故.. – 2012-04-26 05:20:09