Ich habe die Klasse Arten:
Daraus wurden Objekte erzeugt, die auch als solche in einer Objekt-Datenbank (db4o) gespeichert wurden.
Wenn ich die Objekte dieses Typs aus der Datenbank lese, werden sie in eine ArrayList geschrieben.
Dumm ist nur, dass sie in die ArrayList in der Reihenfolge eingefügt werden, in der sie auch in der Datenbank gespeichert wurden. Daher möchte ich diese Objekte alphabetisch sortieren, und zwar nach der Eigenschaft art.
Nun habe ich gelesen, dass man so etwas mit Collections und Comparatoren realisieren kann. Problem ist aber, dass die Beispiele, die ich finde, relativ simpel sind, d.h., es gibt zwei Strings oder Integer-Werte im Array, und dazu wird ein Comparator erstellt und dann per Collections.sort() sortiert. Bei mir wird aber nicht nach dem Eintrag in der ArrayList sortiert, sondern nach einer Eigenschaft aus dem Eintrag (der Eintrag ist in dem Falle ein Objekt der Klasse Arten).
So wie ich das sehe, hat Comparator nur zwei Parameter für die Strukturen, die es vergleichen soll. Ich brauche aber mehr, da ich mehr als nur zwei Einträge in der ArrayList habe.
Mich beschleicht eh das Gefühl, dass ich da etwas falsch verstanden habe, weil ich mir nicht vorstellen kann, wie das so klappen soll. Vielleicht gibt es aber auch eine andere Möglichkeit so etwas zu bewerkstelligen.
Im Prinzip ist die Situation folgende:
Ich hab einige Objekte einer bestimmten Klasse, und möchte diese Objekte alphabetisch oder numerisch (je nach Anforderung) nach einer bestimmten Eigenschaft der Objekte sortieren.
Dabei sollte man bedenken, dass ich auch Klassen haben werde, die etwas komplexer aufgebaut sein werden, als diese hier (Arten). Es wird mehr Eigenschaften geben, nach denen ich sortieren möchte.
Es kann auch mal der Fall auftreten, dass ich Objekte habe, die als erstes Sortiermerkmal ein Datum und als zweites einen String haben.
Wie macht man so etwas in Java?
Code:
package mampf;
public class Arten {
private String art;
public Arten(String art){
this.art = art;
}
public Arten(){
this.art = null;
}
public String getArt(){
return this.art;
}
public void setArt(String art){
this.art = art;
}
}
Daraus wurden Objekte erzeugt, die auch als solche in einer Objekt-Datenbank (db4o) gespeichert wurden.
Wenn ich die Objekte dieses Typs aus der Datenbank lese, werden sie in eine ArrayList geschrieben.
Dumm ist nur, dass sie in die ArrayList in der Reihenfolge eingefügt werden, in der sie auch in der Datenbank gespeichert wurden. Daher möchte ich diese Objekte alphabetisch sortieren, und zwar nach der Eigenschaft art.
Nun habe ich gelesen, dass man so etwas mit Collections und Comparatoren realisieren kann. Problem ist aber, dass die Beispiele, die ich finde, relativ simpel sind, d.h., es gibt zwei Strings oder Integer-Werte im Array, und dazu wird ein Comparator erstellt und dann per Collections.sort() sortiert. Bei mir wird aber nicht nach dem Eintrag in der ArrayList sortiert, sondern nach einer Eigenschaft aus dem Eintrag (der Eintrag ist in dem Falle ein Objekt der Klasse Arten).
So wie ich das sehe, hat Comparator nur zwei Parameter für die Strukturen, die es vergleichen soll. Ich brauche aber mehr, da ich mehr als nur zwei Einträge in der ArrayList habe.
Mich beschleicht eh das Gefühl, dass ich da etwas falsch verstanden habe, weil ich mir nicht vorstellen kann, wie das so klappen soll. Vielleicht gibt es aber auch eine andere Möglichkeit so etwas zu bewerkstelligen.
Im Prinzip ist die Situation folgende:
Ich hab einige Objekte einer bestimmten Klasse, und möchte diese Objekte alphabetisch oder numerisch (je nach Anforderung) nach einer bestimmten Eigenschaft der Objekte sortieren.
Dabei sollte man bedenken, dass ich auch Klassen haben werde, die etwas komplexer aufgebaut sein werden, als diese hier (Arten). Es wird mehr Eigenschaften geben, nach denen ich sortieren möchte.
Es kann auch mal der Fall auftreten, dass ich Objekte habe, die als erstes Sortiermerkmal ein Datum und als zweites einen String haben.
Wie macht man so etwas in Java?