package javacodebook.collections.collection.sort; import java.util.*; public class CollectionSort { public static void main(String[] args) { Vector v = new Vector(); v.add(new User("Mustermann, Klaus", "Musterstrasse 5", "12345", "Musterhausen")); v.add(new User("Vorbildfrau, Ursula", "Solide Strasse 1", "23456", "Anstandshausen")); v.add(new User("Beispielkind, Dietrich", "Spielplatz 9", "34567", "Entenhausen")); System.out.println("---Standard-Sortierung nach Namen---"); Collections.sort(v); for(Enumeration e = v.elements(); e.hasMoreElements(); ) System.out.println(e.nextElement()); System.out.println("---Comparator-Sortierung nach Ort---"); Collections.sort(v, new AdressComparator()); for(Enumeration e = v.elements(); e.hasMoreElements(); ) System.out.println(e.nextElement()); } } --- Neue Klasse --- package javacodebook.collections.collection.sort; public class AdressComparator implements java.util.Comparator{ public int compare(Object o1, Object o2) { if(!(o1 instanceof User) || !(o2 instanceof User)) throw new RuntimeException("Ungültiger Typ für Vergleich"); User u1 = (User)o1; User u2 = (User)o2; return u1.getOrt().compareToIgnoreCase(u2.getOrt()); } } --- Neue Klasse --- package javacodebook.collections.collection.sort; public class User implements java.lang.Comparable { private String name; private String strasse; private String plz; private String ort; public User(String name, String strasse, String plz, String ort) { this.name = name; this.strasse = strasse; this.plz = plz; this.ort = ort; } public String getName() { return name; } public String getOrt() { return ort; } //die weiteren get()- und set()-Methoden sind für dieses Beispiel nicht //relevant /* * Vergleiche zwei User-Objekte anhand des Namens */ public int compareTo(Object o) { //Wenn das übergebenen Objekt nicht der Klasse User angehört, macht der //Vergleich keinen Sinn if(!(o instanceof User)) throw new RuntimeException("Ungültiger Typ für Vergleich"); User user = (User)o; //Der Name des eigenen User-Objekts wird unter Nichtbeachtung von //Gross- und Kleinschreibung mit dem Namen des übergebenen User-Objekts //verglichen und der Vergleichswert wird zurückgegeben return this.name.compareToIgnoreCase(user.getName()); } public String toString() { return name + " - " + strasse + " - " + plz + " " + ort; } }