2016-11-30 14 views
1

Ich habe eine ArrayList<ArrayList<Integer>> und ich möchte es so sortieren, dass ich alle Listen in lexikographischer Reihenfolge haben werde.ArrayList von ArrayList von Integern in lexikographischer Reihenfolge in Java

Zum Beispiel:

Die Liste vor dem Sortieren (Komma getrennt eine Liste von anderen): 2 6 8 1 3 6, 1 2 8

Was ich nach dem Sortieren erhalten mag: 1 2 8 1 3 6, 2 6 8

ich sah, dass ich Collections.sort verwenden, aber sah es nur für einen Wert an einem einzelnen Index Vergleich nur:

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

aber mit, dass mein Ergebnis wird sein, falsch (1 3 6, 1 2 8, 2 6 8).

Ist es möglich, etwas wie diese Struktur zu verwenden, um nicht einen Wert, sondern alle in den Listen zu vergleichen? Alle Listen haben die gleiche Größe.

Antwort

2

iterieren einfach über beide Sammlungen im Comparator: (Diese prüft nicht auf gleiche Längen, könnten Sie es hinzufügen möchten)

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

Danke sowohl für Antwort und meine Rechtschreibung zu korrigieren. :) – Halep