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; } }