Mega Code Archive

 
Categories / Java / Internationalization
 

Sort Collate

import java.io.BufferedReader; import java.io.FileReader; import java.text.CollationKey; import java.text.Collator; import java.text.RuleBasedCollator; import java.util.Locale; import java.util.Vector; class CollateApp {   public static void main(String args[]) {     if (args.length != 1) {       System.out.println("Usage: java CollateApp file");     }     Locale defaultLocale = Locale.getDefault();     RuleBasedCollator collator = (RuleBasedCollator) Collator.getInstance(defaultLocale);     Vector keyVector = new Vector();     try {       BufferedReader in = new BufferedReader(new FileReader(args[0]));       String line;       while ((line = in.readLine()) != null)         keyVector.addElement(collator.getCollationKey(line));       in.close();     } catch (Exception ex) {       System.out.println(ex);     }     CollationKey keys[] = new CollationKey[keyVector.size()];     keys = sort(keys);     for (int i = 0; i < keys.length; ++i)       System.out.println(keys[i].getSourceString());   }   static CollationKey[] sort(CollationKey keys[]) {     boolean changes = true;     while (changes) {       changes = false;       for (int i = 0; i < keys.length - 1; ++i) {         int compare = keys[i].compareTo(keys[i + 1]);         if (compare > 0) {           changes = true;           CollationKey temp = keys[i];           keys[i] = keys[i + 1];           keys[i + 1] = temp;         }       }     }     return keys;   } }