package com.idega.util; import java.text.Collator; import java.util.Comparator; import java.util.Locale; /** * A very simple class that compares two strings alphabetically by their local. Useful for TreeMaps for example * just construct a TreeMap map = new TreeMap(new StringAlphabeticalComparator(locale)) and it keeps the maps keys sorted. * @author Eiki * */ public class StringAlphabeticalComparator implements Comparator<String> { private boolean ascending = false; private Collator collator; public StringAlphabeticalComparator(Locale locale) { this.collator = Collator.getInstance(locale); } public StringAlphabeticalComparator(Locale locale, boolean ascending) { this(locale); this.ascending = ascending; } /** * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ public int compare(String o1, String o2) { int discriminator = ascending ? -1: 1; return discriminator * collator.compare(o1, o2); } }