CollationKey

The CollationKey class (in java.text) is used in conjunction with Collator to optimize string comparison operations. When comparing many strings repeatedly, creating a CollationKey for each string once, and then comparing the keys instead of the strings, offers better performance.

Key Features:

  • Represents a string in a form that’s optimized for comparison
  • Can be used to sort or search large collections efficiently
  • Depends on the Collator used to generate it

Simple Program

import java.text.Collator;
import java.text.CollationKey;
import java.util.Locale;

public class SimpleCollationKeyExample {
    public static void main(String[] args) {
        Collator collator = Collator.getInstance(Locale.ENGLISH);
        CollationKey key1 = collator.getCollationKey("resume");
        CollationKey key2 = collator.getCollationKey("résumé");

        if (key1.compareTo(key2) == 0) {
            System.out.println("The CollationKeys are considered equal.");
        } else {
            System.out.println("The CollationKeys are different.");
        }
    }
}
/*
The CollationKeys are considered equal.
*/

Problem Statement

Paani and Mahesh are developing a book search feature for a multilingual library app. The system must sort titles quickly, even if there are thousands. To boost performance, they use CollationKey to pre-process the titles for fast locale-sensitive comparison.

import java.text.Collator;
import java.text.CollationKey;
import java.util.*;

public class LibraryBookSorter {
    public static void main(String[] args) {
        String[] titles = {
            "Zebra Stories", "Éclair Recipes", "Álgebra Básica", 
            "Résumé Writing", "Apple Innovations", "résumé Builder"
        };

        Collator collator = Collator.getInstance(Locale.FRENCH);
        collator.setStrength(Collator.PRIMARY);

        // Pre-process strings into CollationKeys
        List<CollationKey> keys = new ArrayList<>();
        for (String title : titles) {
            keys.add(collator.getCollationKey(title));
        }

        // Sort using compareTo of CollationKey
        Collections.sort(keys);

        System.out.println("Sorted Book Titles (Using CollationKey):");
        for (CollationKey key : keys) {
            System.out.println(key.getSourceString());
        }
    }
}
/*
Sorted Book Titles (Using CollationKey):
Álgebra Básica
Apple Innovations
Éclair Recipes
Résumé Writing
résumé Builder
Zebra Stories
*/

CollationKey is a powerful tool for high-performance, locale-sensitive string comparison:

  • Comparing or sorting a large number of strings repeatedly
  • You want to optimize performance over repeated string comparisons
  • Sorting needs to respect locale-specific rules
Scroll to Top