Blog

Sie befinden sich hier: Blog

Sortieren in Java

Freitag, 24. Dezember 2010 @ 08:44 geschrieben von Manfred Heiland

Kürzlich hatte ich in einem Projekt ein Problem mit der Sortierung von Strings in Java. 

Ich sollte eine Liste von Objekte für die Erstellung eines PDF Dokumentes nach einem String sortieren.  Diese Liste wurde schon an einer anderen Stelle von einer Third-Party-Lib sortiert und in HTML ausgegeben. Somit hatte ich eine Referenz für die Verifizierung meiner Lösung.

Also schnell einen Comparator geschrieben

Beispiel mit String Objekten
  Collections.sort(liste, new Comparator<String>() { 
public int compare(String o1, String o2) {
// auf NullPointerChecks wurde hier im Beispiel verzichtet
return o1.compareTo(o2);
}
}
);
Beispielergebnis bei einer Liste mit den Werten "ABC", "AB-C", "AB C"
AB C
AB-C
ABC

und dann Verwunderung. Das Ergebnis war nicht identisch mit dem der Third-Party-Library. Das erwartete Ergebnis sollte so aussehen.

ABC
AB C
AB-C

 

Nach der ersten Verwunderung war mir die Sache schnell klar. Ich mußte natürlich sprachabhängig sortieren. Die dazugehörende Klasse aus dem JDK heißt java.text.Collator. Also schnell die Implementierung geändert und ausprobiert.

 

Beispiel mit String Objekten
Collections.sort(liste, new Comparator<String>() {
public int compare(String o1, String o2) {
// auf NullPointerChecks wurde hier im Beispiel verzichtet
Collator collator = Collator.getInstance(Locale.GERMAN);
return collator.compare(o1, o2);
}
}
);
Das Ergebnis der Beispielliste
ABC
AB C
AB-C

Das Ergebnis war identisch. Interessehalber habe ich noch im Source Code der Third-Party-Library nachgeschaut wie das Handling von verschiedenen Locale-Einstellung implementiert ist. 

Eigentlich eine Selbstverständlichkeit das man in Abhängigkeit der Sprache sortiert, aber wie oft wird, vielleicht auch bei ihnen, nur die String compare-Methode verwendet. 

zur Übersicht

Willkommen auf dem avono Blog

Hier auf dem avono Blog finden Sie in regelmäßigen Abständen sowohl technische Neuigkeiten aus unserer Partnerproduktwelt als auch nützliche Entwicklertipps.
Und jetzt kommt der obligatorische Disclaimer: Die Ausführungen der Blogeinträge spiegeln nicht die Meinung der avono AG sondern nur die Sicht der einzelnen Autoren wider.

Kategorien


Suche