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
Collatorused 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
