---
title: 'Schnelle Vergleiche mit CollatorKeys'
url: 'https://www.tutego.de/blog/javainsel/2013/09/schnelle-vergleiche-mit-collatorkeys'
markdown: 'https://www.tutego.de/blog/javainsel/2013/09/schnelle-vergleiche-mit-collatorkeys.md'
date: '2013-09-03'
description: '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 schle…'
taxonomy:
  category:
    - Allgemein
---

# Schnelle Vergleiche mit CollatorKeys

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Schnelle Vergleiche mit CollatorKeys

03.09.2013 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

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.

```java
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:

```java
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.

```java
abstract class Collator implements Comparator, Cloneable
```

- `abstract CollationKey getCollationKey( String source )`

    Liefert einen CollationKey für den konkreten String.

Kategorien: [Allgemein](https://www.tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Bildfilter mit AWT-ImageFilter](https://www.tutego.de/blog/javainsel/2013/09/bildfilter-mit-awt-imagefilter.md)
- Next: [Kleine Kekse: die Klasse javax.servlet.http.Cookie](https://www.tutego.de/blog/javainsel/2013/09/kleine-kekse-die-klasse-javax-servlet-http-cookie.md)
