# ArrayList sortieren



## Oli (15. Sep 2008)

Hallo,

Ich habe eine ArrayList, die mit String[] - Arrays gefüllt ist.

Nun möchte ich diese nach string[0] sortieren.

Collections.sort(List<T> list) funktioniert nicht, was ja logisch ist, womit soll er denn auch vergleichen.


public static <T> void sort(List<T> list, Comparator<? super T> c).


Ich hab mir die Doku angesehen, aber ich versteh´s net, wenn ich ehrlich bin. Wie kann ich denn der Sort - Methode einen Comparator mitgeben, bzw. wie erstelle ich mir einen solchen?

Hat jemand ein kleines verständlches Beispiel zu hand wie man eine ArrayList<String[]> sortiert?


Mir ist auch klar dass ich mit einem BubbleSort die Liste "zu Fuß" sortieren könnte, aber ich möchte es eigentlich verstehen, wie das in Java funzt.

Vielen Dank,

Oli


----------



## maki (15. Sep 2008)

In der FAQ sind Beispiele: http://www.java-forum.org/de/viewtopic.php?p=251024


----------



## Oli (15. Sep 2008)

Hallo,

das habe ich schon gefunden, nur wird die ArrayList eben mit String[] - Arrays gefüllt. Diese erhalte ich von einer anderen Funktion, die ich nicht bearbeiten kann(darf).

Muss ich nun wirklich eine Klasse schreiben, die String[] Objekte enthält und die compareTo implementiert?

Geht das nicht einfacher?

Grüße Oli


----------



## SlaterB (15. Sep 2008)

> Muss ich nun wirklich eine Klasse schreiben, die String[] Objekte enthält und die compareTo implementiert? 

genau (edit: halt, es gibt auch Comparator, siehe Tutorials/ Lehrbücher/ angegebenen Link/ google, dachte die meinst du)

> Geht das nicht einfacher? 

was ist daran schwer?
der Code muss eh irgendwo stehen, kann ja niemand herzaubern,
du brauchst auf jeden Fall eine Methode,

natürlich könntest du diese Methode auch in einer eigenen vorhanden Klasse schreiben
aber dann müsstest du der fertig vorhanden Collections.sort-Methode irgendwie verklickern, dass es bitte deine Methode x aufrufen soll,
wie willst du das machen?

eine spezielle neue Comparator-Klasse dafür ist sowohl sauber (Trennung von Aufgaben) als auch einfach


----------



## Oli (15. Sep 2008)

Jo,

genau das mit dem Comparator versteh ich net wirklich.

Wie muss denn sowas aussehen?

Gibt´s keinen Beispielcode, an dem man sich das herleiten kann?

Grüße Oli


----------



## SlaterB (15. Sep 2008)

SlaterB hat gesagt.:
			
		

> siehe Tutorials/ Lehrbücher/ angegebenen Link [! alles durchgelesen dort?]/ google



http://www.java-forum.org/de/viewtopic.php?p=251024


----------



## Landei (15. Sep 2008)

```
class MyCoolStringArrayComparator implements Comparator<String[]> {
  public int compare(String[] eins, String[] zwei) {
      //das darfst du selber ausfüllen:
      //wenn eins < zwei dann return -1
      //wenn eins = zwei dann return 0
      //wenn eins > zwei dann return 1
  }
}
```


----------



## Gast (15. Sep 2008)

Hallo,

danke an alle, ich glaube ich hab´s jetzt verinnerlicht. 

Grüße Oli


----------



## Oli (16. Sep 2008)

Hallo,

ich habe ein Panel mit einem GridBagLayout. Auf diesem liegen dynamisch JTextFields. Die "Füllrichtung" ist erst 10 in eine Spalte und dann gridx++.

Wenn ich nun 22 Textfelder adde, dann habe ich logischerweise 3 Spalten, 2 mit je 10 und eine mit 2 Textfeldern. Der Fokus wird aber nun zeilenweise abgearbeitet, also R1C1, R1C2, R1C3, R2C1, R2C2, R2C3, R3C1 usw. (R=row, C=col).

Ich möchte aber, dass der Fockus zuerst die erste Spalte, dann die zweite Spalte usw. durchläuft. Hat jemand eine Idee, wie das zu realisieren ist?

Ich arbeite mit dem KeyBoardFocusManager und hole mir dort mit focusNExtComponent() das nächste TF.


Danke,

Oli

--- sorry gehört hier nicht rein, kann gerne gelöscht werden ---


----------

