Sortierung zweidimensionaler Arrays

Hallo!

Ich verzweifle schon an der Suche nach einer Sortierungsfunktion für mehrdimensionale Arrays.

Arrays.sort(Object a) geht nicht, da Arrays in Arrays nicht sortierbar sind.

Beispiel:

String[][] array = new String[2][2];
array[0][0] = "Stefan";
array[0][1] = "Fürtbauer";
array[1][0] = "Markus";
array[1][1] = "Müller";

Ich möchte dieses Array nun nach der zweiten Dimension sortieren. Wie geht das, ohne es slebst auszuprogrammieren?

PS: Hatte im Web nur einen einzigen Hinweis auf das Interface „Comparator“ gefunden, kann damit aber nix anfangen.

Danke, Stefan.

Hallo!

Ich verzweifle schon an der Suche nach einer
Sortierungsfunktion für mehrdimensionale Arrays.

willst du die einzelnen arrays sortieren ?
oder eine Ordnung über alle arrays aufbauen ?

Arrays.sort(Object a) geht nicht, da Arrays in Arrays nicht
sortierbar sind.

wie wärs mit :

for (int i=0;i

cu

Hallo Stefan,

IMHO ist das aber eine Design-Schwäche. Zusammengehörende Daten in mehrdimensionalen Arrays zu speichern ist einfach unpraktisch.

Richtige Vorgehensweise wäre es eine Klasse „Person“ zu schreiben die als Attribute den Vor- und den Nachnamen hat. Diese Klasse implementiert das „Comparable“-Interface und vergleicht intern zwei Objekte intern mit dem Nachnamen (zusätzlich könntest du dann auch einbauen, dass bei gleichem Nachnamen der Vorname verglichen wird).

Dann nimmst du ein eindimensionales Array mit Elementen vom Typ „Person“ und kannst dieses dann einfach mit Arrays.sort sortieren.

Grüße, Robert

Ich hatte vielleicht vergessen zu sagen, dass ich keine Chance habe, die Daten in einer anderen Form zu verwenden. Dieses Array besteht bereits in einer Serverpage und damit muss ich leben.

Eine Lösung hat sich nun gefunden. Folgenede Klasse ermöglich die Verwendung der Standardmethode Arrays.Sort:

public class StringArrayComparator implements Comparator 
{ 
 int sortColumn = 0; 

 public int setSortColumn(int c) 
 { 
 sortColumn = c; 
 return c;
 } 

 public int compare(Object o1, Object o2) 
 { 
 if (o1 == null && o2 == null) 
 return 0; 
 if (o1 == null) 
 return -1;
 if (o2 == null) 
 return 1; 
 String[] s1 = (String[])o1; 
 String[] s2 = (String[])o2; 
 return s1[sortColumn].compareTo(s2[sortColumn]); 
 }
}

Ein aufruf selbiger sieht dann so aus:

StringArrayComparator comp = new StringArrayComparator();
comp.setSortColumn(2);
Arrays.sort(foundUser,comp);

Trotzdem dank für Eure Vorschläge.

Stefan