2D Array sortieren

Status
Nicht offen für weitere Antworten.

beachmeat

Mitglied
Hallo zusammen,

erstmal möchte ich als Neuling im Forum "Hallo" sagen, ich fange grade an etwas tiefer in Java vorzudringen, und stehe grade vor dem Zaun der mich vor dem Wissen abhalten will, wie man ein 2D Array sortieren kann...


Wenn ich ein Array habe das wie folgt aufgebaut ist:


Code:
int[][] silh;
silh  = new int[2][2];

silh[0][0] = 1;
silh[0][1] = 10;

silh[1][0] = -1;
silh[1][1] = 20;


nun möchte ich dieses Array möglichst performant nach dem Wert im 2ten Index sortieren (also 10 bzw. 20) - wie ist das möglich? Ich nehme mal an das das schon mal jemand vor mir gelöst hat :)

Vielen Dank für eure Hilfe!
Manuel
 
B

Beni

Gast
Such nach "Arrays.sort" und "Comparator", das reicht schon um das ganze zu sortieren.

Link
 

beachmeat

Mitglied
Hallo Beni und danke für deine Antwort.

Ich sehe bei Arrays.sort allerdings nicht wo ich da ein 2D array angeben kann, und bestimmen welchen Index der 2ten dimension er zum vergleichen nehmen soll.
Kannst Du mir bitte ein kleines Beispiel machen? :oops:
 

byte

Top Contributor
Comparator ist unnötig bei nem int array. versuchs mal mit

Code:
Arrays.sort(array[0]);
Arrays.sort(array[1]);
 

beachmeat

Mitglied
Vielleicht habe ich mich nicht gut ausgedrückt...

Dies Array:
Code:
silh[0][0] = 1; 
silh[0][1] = 0; 

silh[1][0] = 2; 
silh[1][1] = 1;

silh[1][0] = 3; 
silh[1][1] = -10;

soll so sortiert werden, das der 2te Index in der 2ten Dimension benutzt wird....also das dann folgendes rauskommt:

Code:
silh[1][0] = 3; 
silh[1][1] = -10; // <-- die stelle wird verglichen, deshalb dies am Anfang

silh[0][0] = 1; 
silh[0][1] = 0; 

silh[1][0] = 2; 
silh[1][1] = 1;

Ich denke also das ich eine Methode bräuchte, bei welcher man bestimmen kann welcher Index verwendet wird, oder?
 
B

Beni

Gast
Ein int[][] ist kein 2D-Array! Es ist ein Array von int[]'s. Da aber ein int[] nur ein Object ist, funktioniert "sort( Object[] x )".

Mit Java 1.5:
Code:
import java.util.Arrays;
import java.util.Comparator;

public class Test {
    public static void main( String[] args ) {
        int[][] test = new int[][]{
                {1, 4},
                {2, -8},
                {3, 5}
        };
        
        System.out.println( "Nicht sortiert:" );
        print( test );
        
        Arrays.sort( test, new Comparator<int[]>(){
            public int compare( int[] o1, int[] o2 ) {
                return o1[1] - o2[1];
            }
        });
        
        System.out.println( "Sortiert:" );
        print( test );
    }
    
    public static void print( int[][] test ){
        for( int i = 0; i < test.length; i++ )
            System.out.println( Arrays.toString( test[i] ));
    }
}
 

beachmeat

Mitglied
Danke nochmals für die Antwort, ich bekomme allerdings diesen Compiler-Error in Eclipse:

java.lang.Error: Unresolved compilation problems:
The type Comparator is not generic; it cannot be parameterized with arguments <int[]>
Syntax error, parameterized types are only available if source level is 5.0
 
B

Beni

Gast
Schalt unter "Window > Preferences > Java > Compiler" alles auf 5.0 um. Unter Umständen musst du dir auch eine neuere Version der JRE/von Eclipse besorgen :wink:

(Ansonsten wäre eine Variante zu überlegen, wie man das halt ohne Generics machen würde. Es ist nicht allzuschwer...)
 

beachmeat

Mitglied
Ok, mit ein bißchen Hirn auf meiner Seite hätte ich da ja auch selbst kapieren können :)
Es klappt jetzt! Vielen Dank!

Wegen das ganze "ohne Generics" : Die Sache ist, da ich eigentlich nicht in Eclipse arbeite, sondern in *hust* processing....da ist das nicht ganz unproblematisch auf jre 5 zu arbeiten afaik...deshalb wäre ich ausserordentlich an einer Lösung interessiert die nichts auf der 5er Version benutzt falls das möglich ist...?
 

byte

Top Contributor
der comparator ohne generics sieht quasi genauso aus. der unterschied ist, dass die compareTo() dann als parameter zwei objects benötigt. du musst dann in der compareTo() auf die richtigen objekte casten (in deinem fall int[]).
 

beachmeat

Mitglied
Ich weiss es hört sich unglaublich an, aber ich weiss nicht wie ich das umsetzen soll...wo ist denn die compareTo?

Meinst du so?

Code:
Arrays.sort( test,  public int compare( int[] o1, int[] o2 ) { 
 return o1[1] - o2[1]; 
 });
[/code]
 

byte

Top Contributor
nein. so etwa:

Code:
Arrays.sort( test, new Comparator(){
            public int compare( Object o1, Object o2 ) {
                int[] a1 = (int[]) o1;
                int[] a2 = (int[]) o2;
                return a1[1] - a2[1];
            }
        });
 

beachmeat

Mitglied
Genial. :toll:

Funktioniert, sogar im beschränkten Processing.
Vielen Vielen Dank, ihr habt mir wirklich sehr geholfen und meine Motivation am Leben erhalten :)

Eine Frage dazu noch: Wäre es möglich das ich anstatt Object gleich int übergebe und mir so das konvertieren sparen? Oder geht genau das nicht ohne <int[]> ?

Danke!
Manuel
 
B

Beni

Gast
Oder geht genau das nicht ohne <int[]>
Jop, genau das geht nicht (es sei denn, du schreibst dir einen eigene Sortieralgorithmus...). Deshalb wurde die Generics auch eingeführt :wink:

Ich weiss gerade nicht, ob "einArray.clone()" funktioniert, aber schreib dir doch einfach eine kleine Methode. Mit "System.arraycopy" kann man ziemlich schnell ganze Arrays umkopieren.

Müsste ungefähr so funktionieren:
Code:
public int[][] clone( int[][] original ){
  int[][] clone = new int[original.length][];
  for( int i = 0; i < clone.length; i++ ){
    clone[i] = new int[ original[i].length ];
     System.arraycopy( original[i], 0, clone[i], 0, clone[i].length );
  }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
A Array sortieren Java Basics - Anfänger-Themen 1
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
W Array sortieren Java Basics - Anfänger-Themen 3
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
D Erste Schritte array aufsteigend sortieren und ausgeben Java Basics - Anfänger-Themen 17
C Werte im Array sortieren Java Basics - Anfänger-Themen 5
A Input/Output 2-dimensionales array sortieren Java Basics - Anfänger-Themen 3
J Array nach häufigkeit sortieren Java Basics - Anfänger-Themen 4
S Strings im Array nach Namen sortieren Java Basics - Anfänger-Themen 11
E Array sortieren, es will nicht Java Basics - Anfänger-Themen 6
B Problrm beim Array sortieren Java Basics - Anfänger-Themen 0
S Mehrdimensionales Array sortieren Java Basics - Anfänger-Themen 3
G Array mit BubbleSort sortieren Java Basics - Anfänger-Themen 2
F Array mit Zufallszahlen sortieren Java Basics - Anfänger-Themen 7
N Array sortieren Java Basics - Anfänger-Themen 6
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
T Sortieren/Suche klappt nicht ganz (String Array) Java Basics - Anfänger-Themen 2
L Array Sortieren Java Basics - Anfänger-Themen 3
H Sortieren von Array Java Basics - Anfänger-Themen 7
K 2D-Array sortieren Java Basics - Anfänger-Themen 7
I Objekte in einem Array sortieren Java Basics - Anfänger-Themen 19
K Array sortieren Java Basics - Anfänger-Themen 19
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
T Strings mit compareto vergleichen und array sortieren Java Basics - Anfänger-Themen 14
B Array nach dem Alphabet sortieren Java Basics - Anfänger-Themen 11
J Array mit Objekten sortieren Java Basics - Anfänger-Themen 11
S Array sortieren NULL oder Empty ignorieren. Java Basics - Anfänger-Themen 9
S Array sortieren und ausgeben Java Basics - Anfänger-Themen 3
C zweidimensionales Array sortieren Java Basics - Anfänger-Themen 6
W Objekte in einer Array sortieren Java Basics - Anfänger-Themen 3
R 2D Array sortieren Java Basics - Anfänger-Themen 11
A String-Array lexikographisch sortieren Java Basics - Anfänger-Themen 6
A Array einer eigenen Klasse sortieren Java Basics - Anfänger-Themen 11
J 2D Array mit Zeilenverschiebung Sortieren Java Basics - Anfänger-Themen 15
B Zufällige Zahlen in Array sortieren Java Basics - Anfänger-Themen 18
c_sidi90 Array mit Bubblesort sortieren Java Basics - Anfänger-Themen 8
D OOP mit compareTo Array sortieren (aus zwei Klassen) Java Basics - Anfänger-Themen 3
E Array Sortieren Java Basics - Anfänger-Themen 3
B Array durchlaufen und sortieren Java Basics - Anfänger-Themen 9
L Einzeiler - String Array sortieren Java Basics - Anfänger-Themen 16
J Array aufsteigend sortieren Java Basics - Anfänger-Themen 10
D Array nach ungerade zahlen sortieren Java Basics - Anfänger-Themen 6
A Sortieren von Zahlen in einem Array Java Basics - Anfänger-Themen 13
T Zahlen in ARRAY Sortieren Java Basics - Anfänger-Themen 10
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
N Array sortieren - Java Basics - Anfänger-Themen 7
T Array mit Integern sortieren Java Basics - Anfänger-Themen 9
M Array anders sortieren, aber die Reihenfolge beibehalten Java Basics - Anfänger-Themen 4
kulturfenster Array mit Strings sortieren Java Basics - Anfänger-Themen 7
D Mehrdimensionales Array sortieren Java Basics - Anfänger-Themen 5
G Array List sortieren / auswerten Java Basics - Anfänger-Themen 24
B 2D-Array (Tabelle) alphabetisch sortieren Java Basics - Anfänger-Themen 6
S array nach 2 kriterien sortieren Java Basics - Anfänger-Themen 3
R Array sortieren Java Basics - Anfänger-Themen 12
G 2D-Array sortieren Java Basics - Anfänger-Themen 11
M ArrayList in Array, dann sortieren Java Basics - Anfänger-Themen 15
R Array sortieren Java Basics - Anfänger-Themen 2
I Array sortieren oder Tabelle sortieren ? Java Basics - Anfänger-Themen 2
M 2-dimensionales Array sortieren Java Basics - Anfänger-Themen 2
R String-Array sortieren Java Basics - Anfänger-Themen 12
P Array verkleinern und sortieren Java Basics - Anfänger-Themen 11
I Zahlen in Array schreiben und dann sortieren Java Basics - Anfänger-Themen 7
G float-Array _ohne_ Arrays.sort sortieren Java Basics - Anfänger-Themen 5
P Array füllen & sortieren Java Basics - Anfänger-Themen 3
J Array sortieren Java Basics - Anfänger-Themen 4
M Array mit Werten füllen und sortieren Java Basics - Anfänger-Themen 2
O Array sortieren Java Basics - Anfänger-Themen 3
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48

Ähnliche Java Themen

Neue Themen


Oben