Sortieren eines 2D-Integer-Arrays basiert auf einer Spalte

Ich habe ein 2D-array möchte ich Sortieren, basierend auf der zweiten Spalte. Die erste Spalte sollte bleiben, gepaart mit der zweiten Spalte.

2D-array wird zunächst wie folgt (2x10-matrix):

0 10
1 9
2 9
3 9
4 15
5 10
6 4
7 8
8 11
9 12

Möchte ich die oben genannten 2D-array sortiert werden wie diese:

4 15
9 12
8 11
0 10
5 10
1 9
2 9
3 9
7 8
6 4

Nun, ich habe versucht, die Anpassung der Antwort aus: Sortieren ein zwei-dimensionales array, basierend auf einer Spalte in diesem code:

Arrays.sort(theArray, new Comparator<Integer[]>()
{
    @Override
    public int compare(Integer[] int1, Integer[] int2)
    {
        Integer numOfKeys1 = int1[1];
        Integer numOfKeys2 = int2[1];
        return numOfKeys1.compareTo(numOfKeys2);
    }
});

Aber es scheint nicht so zu Sortieren das array überhaupt. Beim drucken das array nach dem Aufruf der Funktion sort() das array in seine ursprüngliche Ordnung.

Ich habe auch versucht, die Anpassung der Antwort von hier: Sortierung 2D-array von Strings in java aber ich hatte das gleiche problem.

Habe ich einige fatale Fehler bei der Anpassung dieser Lösungen, oder sollte mein code funktionieren?

Auch, wie würde ich mich über Sortieren Sie das array in absteigender Reihenfolge? Würde ich ersetzen Sie die return-Anweisung in der compare () - mit dieser Zeile?

return -numOfKeys2.compareTo(numOfKeys1);

Jegliche Hilfe würde sehr geschätzt werden. Danke!

EDIT: Nur die Buchung der rest von meinem code zu sehen, wenn das problem woanders liegt.

public void Sort()
{   
    Integer[][] theArray = {{0,10},{1,9},{2,9},{3,9},{4,15},{5,10},{6,4},{7,8},{8,11},{9,12}};;

    dump(theArray);
    Arrays.sort(theArray, new Comparator<Integer[]>()
    {
        @Override
        public int compare(Integer[] int1, Integer[] int2)
        {
            Integer numOfKeys1 = int1[1];
            Integer numOfKeys2 = int2[1];
            return numOfKeys1.compareTo(numOfKeys2);
        }
    });

    System.out.println("====");
    dump(theArray);     
}

public void dump(Integer[][] array)
{
    for(int p = 0, q = 10; p < q; p++)
    {
        System.out.println(array[p][0] + " " + array[p][1]);
    }
}

EDIT 2:

Habe ich es zu arbeiten. Danke an alle für Eure Hilfe. Ich hatte mehrere Sort () - Funktionen (ein älteres, das nicht funktioniert, und die, die Sie siehe oben), und es stellt sich heraus, ich rief die falsche ein, obwohl ich dachte, ich änderte den Anruf. Nur einer dieser Tage.

Fühlen Sie sich frei, verwenden Sie den obigen code, wenn Sie möchten, ein array Sortieren. Es ist voll funktioniert jetzt.

Code sollte nicht laufen; das array von arrays ist ein einzelnes array mit einer Reihe von zwei-element-arrays in es, Sie behandeln Sie es als ein array von zwei zehn-element-arrays, wenn Sie es drucken.
Du hast Recht, ich war immer meine Indizes Durcheinander. Danke für die Korrektur mich. Und vielen Dank für deine Hilfe.

InformationsquelleAutor Drake | 2011-10-29

Schreibe einen Kommentar