was ich erreichen möchte, ist eine Sammlung von Objekten durch einen String-Wert zu sortieren. Jedoch in einer locale-abhängigen Weise mit einem Collator. Aus Gründen der Performance möchte ich nicht die Collator-Methode compare() (wie unten im Code) verwenden, sondern die CollationKey-Klasse, da die Java-API angibt, dass die Verwendung eines CollationKey viel schneller ist.Java: Sortieren einer Sammlung mit einem CollatorKey
Aber wie implementiere ich die compareTo() Methode mit dem CollationKey? Soweit ich es verstanden habe, muss ich alle Vergleichsmethoden komplett selbst schreiben, wenn ich einen CollationKey verwende. Daher kann ich die Collections.sort() -Methode nicht mehr verwenden. Ich bin sehr dankbar für ein Beispiel, das leicht zu verstehen ist und die effizienteste Implementierung ist, um die Sammlung von Person-Objekten mit einem CollationKey zu sortieren.
Vielen Dank!
public class Person implements Comparable<Person> {
String lastname;
public int compareTo(Person person) {
//This works but it is not the best implementation for a good performance
Collator instance = Collator.getInstance(Locale.ITALY);
return instance.compare(lastname, person.lastname);
}
}
...
ArrayList list = new ArrayList();
Person person1 = new Person("foo");
list.add(person1);
Person person2 = new Person("bar");
list.add(person2);
Collections.sort(list);
...
Hallo Erickson, vielen Dank für die intelligente Lösung, ich werde es so implementieren, danke! – jan