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