Collator doesn't sort right for given Locale
Here's the locale alphabet order: wikipedia
Here's my code:public static void main(String[] args) {
Locale loc = new Locale("sr","RS");
Collator col = Collator.getInstance(loc);
col.setStrength(Collator.SECONDARY);
List<String> slova = new ArrayList<String>();
slova.add("Austrija");
slova.add("Slovačka");
slova.add("Č");
slova.add("Đ");
slova.开发者_C百科add("C");
slova.add("Grčka");
slova.add("Slovenija");
slova.add("Španija");
slova.add("Švajcarska");
slova.add("Švedska");
slova.add("Srbija");
Collections.sort(slova,col);
for(String s: slova)
System.out.println(s);
}
And here's the output:
Austrija
C Č Grčka Slovačka Slovenija Španija Srbija Švajcarska Švedska ĐAs you can see from the link above this is not the correct ordering.
What am I doing wrong?As I found on your wikipedia page and @Vash his ISO link. I think you mean by "sr" Serbia? Then you will have to choose "cs" as country.
Edit: it depends on the java version you use. Java 6 uses the new iso standard.
I think that the problem could be that there is no country in ISO-3166 with code RS
If the sort order you want is not available, you can create your own order with a RuleBasedCollator. Don't be scared by the documentation of this class. It is as easy as:
String rules = "< a < b < c < ç < d ...";
RuleBasedCollator myRuleBased = new RuleBasedCollator(rules);
Collections.sort(myList, myRuleBased);
Just found out it's a known issue caused by political and lingual circumstances. Thanks for help.
精彩评论