2016-04-29 20 views
0

Ich versuche, eine 2d Arraylist basierend auf dem ersten Element zu sortieren und beim Vergleich, ob die beiden Elemente gleich sind, dann sortieren sie nach dem 2. Element.Sortierung 2d Arraylist basiert auf zwei Elementen

So sieht meine Arraylist wie

[[1, 4, 0], [2, 5, 2], [3, 5, 3], [4, 3, 6]]

und ich mag es wie diese

[[4, 3, 6], [1, 4, 0], [2, 5, 2], [3, 5, 3]]

meine Arraylist Dies sieht auch

ArrayList<ArrayList<Integer>> processes = new ArrayList<>(); 

Das ist, was ich bisher habe mit Auswahlsortierung

int smallInt; 
int j; 
int smallIntIndex; 
for(int i = 1; i<=processes.size();i++){ 
    smallInt = processes.get(i-1).get(1); 
    smallIntIndex = i-1; 
    for(j=i;j<processes.size();j++){ 
     if(processes.get(j).get(1)==smallInt){ 
      //not exactly sure what goes in here 
     }else if(processes.get(j).get(1)<smallInt){ 
      smallInt = processes.get(j).get(1); 
      smallIntIndex = j; 
     } 
    } 
    ArrayList<Integer> temp = processes.get(smallIntIndex); 
    processes.set(smallIntIndex,processes.get(i-1)); 
    processes.set(i-1,temp); 
} 
+0

Wie wird '[[4, 3, 6], [1, 4, 0], [2, 5, 2], [3, 5, 3]] sortiert? – robotlos

+0

Es wird nach dem ersten Element sortiert (1. Index der verschachtelten Array-Liste). –

+0

Wie wäre es mit Buiilt-in Sortierfunktionen wie 'processs.sort ((firstElement, secondElement) -> Integer.compare (firstElement.get (1), secondElement.get (1));' – Palle

Antwort

0

Sind die Etiketten (z.B. 1 oder 2 oder 3 - erster/zweiter/dritter Eintrag) von einem eingeschränkten Satz (z. B. nur Ziffern)? Wenn ja (wie ich denke), können Sie sie sortieren, indem Sie Radix sort anwenden.