2016-11-30 22 views
1

私はArrayList<ArrayList<Integer>>を持っています。私はそれを並べ替えたいので、すべてのリストを辞書順に並べます。例えばJavaの辞書順配列リストのArrayList

リストをソートする前に、(カンマは、一方から他方のリスト区切り):1 2 8:2 6 8、1 3 6を、私は、ソート後に取得したいどのような2 8

1 、1 3 6、2 6 8

私はCollections.sortを使用できることを見ただけで、単一のインデックスの値を比較するためにそれを見た:

Collections.sort(lists, new Comparator<ArrayList<Integer>>(){ 
    public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2){ 
     return list1.get(0).compareTo(list2.get(0)); 
    } 
}); 

しかし、私の結果はとなることで間違っている(1 3 6、1 2 8、2 6 8)。

この構造のようなものを使用して、1つの値ではなくすべての値をリスト内で比較することはできますか?すべてのリストは同じサイズです。

答えて

2

だけComparatorに両方のコレクションを反復処理する: を(これは、同じ長さをチェックしません、あなたはそれを追加したい場合があります)

Collections.sort(lists, new Comparator<ArrayList<Integer>>(){ 
    public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2){ 
     int result = 0; 
     for (int i = 0; i <= list1.size() - 1 && result == 0; i++) 
     { 
      result = list1.get(i).compareTo(list2.get(i)); 
     } 
     return result; 
    } 
}); 
+0

は答え、私のスペルを修正するためにあなたの両方をありがとうございます。 :) – Halep

関連する問題