Wednesday, September 13, 2006

java.text.Collator for String Comparison

The String class doesn't have the ability to compare text from a natural language perspective. Its equals and compareTo methods compare the individual char values in the string. If the char value at index n in name1 is the same as the char value at index n in name2 for all n in both strings, the equals method returns true. The java.text.Collator class provides natural language comparisons. Natural language comparisons depend upon locale-specific rules that determine the equality and ordering of characters in a particular writing system.A Collator object understands that people expect "cat" to come before "Hat" in a dictionary. Using a collator comparison, the following code prints cat < Hat.
Collator collator = Collator.getInstance(new Locale("en", "US"));
int comparison = collator.compare("cat", "Hat");
if (comparison < 0) {
System.out.printf("%s < %s\n", "cat", "Hat");
} else {
System.out.printf("%s < %s\n", "Hat", "cat" );
}
For a detailed description and extra information refer to Strings - Core Java Technologies Technical Tips.

2 comments:

  1. is tere any sorting tool that uses java.text.collator

    ReplyDelete
  2. Is there any way to sort a list in the Case-sensitive order using Collation Keys ?

    eg., I want an unsorted list say "A,b,B,c,a,C" to be sorted case-sensitively as "A,B,C,a,b,c".

    Please provide your suggestions?

    ReplyDelete

Popular Posts