Schnelle Vergleiche mit CollatorKeys

Landestypische Vergleiche können mit der Collator-Klasse gemacht werden. Eine Geschwindigkeitssteigerung ergibt sich durch Collator-Keys. Obwohl sich mit der Collator Klasse sprachspezifische Vergleiche korrekt umsetzen lassen, ist die Geschwindigkeit gegenüber einem normalen String-Vergleich schlechter. Daher bietet die Collator Klasse die Objektmethode getCollationKey() an, die ein CollationKey Objekt liefert, der schnellere Vergleiche zulässt.

Collator col = Collator.getInstance( Locale.GERMAN );
CollationKey key1 = col.getCollationKey( "ätzend" );
CollationKey key2 = col.getCollationKey( "Bremsspur" );

Durch CollationKeys lässt sich die Performance bei Vergleichen zusätzlich verbessern, da der landesspezifische String in einen normalen Javastring umgewandelt wird, der dann schneller verglichen werden kann. Dieses bietet sich zum Beispiel beim Sortieren einer Tabelle an, wo mehrere Vergleiche mit dem gleichen String durchgeführt werden müssen. Der Vergleich wird mit compareTo(CollationKey) durchgeführt. Der Vergleich von key1 und key2 im Beispiel lässt sich demnach durch folgende Zeile ausdrücken:

int comp = key2.compareTo( key1 );

Das Ergebnis ist wie bei der compare() Methode bei Collator Objekten <0, 0 oder >0.

class java.text.CollationKey implements Comparable

  • int compareTo( CollationKey target )

    Vergleicht zwei CollationKey Objekte miteinander.
  • int compareTo( Object o )

    Vergleicht den aktuellen CollationKey mit dem angegeben Objekt. Ruft compareTo((CollationKey)o) auf.
  • boolean equals( Object target )

    Testet die beiden CollationKey Objekte auf Gleichheit.
  • String getSourceString() 
    Liefert den String zum CollationKey.
  • int hashCode()

    Berechnet den Hashcode für den CollationKey.
  • byte[] toByteArray()

    Konvertiert den CollationKey in eine Folge von Bits.

abstract class Collator implements Comparator, Cloneable

  • abstract CollationKey getCollationKey( String source )

    Liefert einen CollationKey für den konkreten String.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert