Collections.sort()や別のソート方法を使用して、Javaでリストのリストを辞書順にソートするにはどうすればよいですか?Javaリストのリストのリスト
private List<List<Integer>> possiblePoles = setPoles();
System.out.println(possiblePoles)
[[1, 3, 5], [1, 2, 3]]
Collections.sort()や別のソート方法を使用して、Javaでリストのリストを辞書順にソートするにはどうすればよいですか?Javaリストのリストのリスト
private List<List<Integer>> possiblePoles = setPoles();
System.out.println(possiblePoles)
[[1, 3, 5], [1, 2, 3]]
あなたはその後、ソート独自のComparator
クラスを実装し、Collections.sort()
class ListComparator<T extends Comparable<T>> implements Comparator<List<T>> {
@Override
public int compare(List<T> o1, List<T> o2) {
for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
int c = o1.get(i).compareTo(o2.get(i));
if (c != 0) {
return c;
}
}
return Integer.compare(o1.size(), o2.size());
}
}
にインスタンスを渡す必要があります自分でソートを実装することにより
List<List<Integer>> listOfLists = ...;
Collections.sort(listOfLists, new ListComparator<>());
さらに詳しい情報:Javaではタイプ消去が使用されるため、ListComparatorのシングルトンインスタンスを作成して安全でないキャストを行うことができますステートレスなとにかく)。 – Nayuki
@Nayuki、私はそれを一度使ったからといって、インスタンスを永遠に持ち歩きたくないので、それをやりたいとは思わない。メモリのフットプリントは小さいかもしれませんが、オブジェクトを作成するコストもかかります。しかし誰もが望むものは何でもできます^^ – MartinS
私は 'int c = ObjectUtils.compare(o1.get(i)、o2.get(i))'を使用します。さもなければ 'o1.get(i)== null'ならばNPEを取得します。 ( 'ObjectUtils'は、apacheコモンズライブラリからのものです) –
使いやすいですか? – MikeCAT
いいえ、Javaの機能になる可能性があります。 – Nic
http://stackoverflow.com/questions/2999129/how-do-i-sort-an-arraylist-lexicographically – developer033