Collections in Java kann man auf einfache Art und Weise sortieren. In der statischen Klasse Collections gibt es eine Methode sort(...) um eine Collection zu sortieren. Die Methode sortiert automatisch vergleichbare Objekte (String, int, ...). Will man ausserhalb der "natuerlichen" Reihenfolge eines Objektes die Collection sortieren, muss braucht man ein Vergleichsobjekt.
Dazu braucht man ein Comparator Objekt, das weiss wie man zwei zu sortierende Objekte in eine Reihenfolge bekommt (welches vor welchem kommt).
public class LastNameComparator() {
public int compare(Object o1, Object o2) {
String name1 = ((Customer) o1).getLastName();
String name2 = ((Customer) o2).getLastName();
return name2.compareTo(name1);
}
}List customers = new ArrayList();
// Fuellen von kunden, dann Sortieren ueber den NachnamenCollections.sort(kunden, new LastNameComparator());oder als Inner Class:
List customers = new ArrayList();
// Fuellen von kunden, dann Sortieren ueber den NachnamenCollections.sort(kunden, new Comparator() {
public int compare(Object o1, Object o2) {
String name1 = ((Customer) o1).getLastName();
String name2 = ((Customer) o2).getLastName();
return name2.compareTo(name1);
}
});Einen sortierten
Iterator einer Map, umgekehrt sortiert nach den Values:
public Iterator iterator() {
List keys = new LinkedList(linkMap.keySet());
Collections.sort(keys, new Comparator() {
public int compare(Object o1, Object o2) {
// use "-" because we want decreasing order
return -((Integer) linkMap.get(o1)).compareTo(((Integer) linkMap.get(o2)));
}
});
return keys.iterator();
}
Eventuell ist der Cast auf Integer nicht noetig.