按所有语言的字母升序排序国家/地区

时间:2016-04-29 09:24:42

标签: java android sorting java-8

我正在为市场调查开发一个Android应用程序。在注册页面上,我有一个微调器列出所有国家,我使用函数Arrays.sort()按字母顺序按升序对列表进行排序。我把我的平板电脑语言保持为'英语'并获得按字母顺序排序的列表。

但是,当我将平板电脑语言更改为葡萄牙语时,显示的列表未排序(请参阅附带的屏幕截图)。该语言有一些不同于英语的字母表。我知道java会根据字符的ASCII码进行排序。但是有没有其他方法可以获得排序结果,无论使用何种语言。

enter image description here

2 个答案:

答案 0 :(得分:3)

我认为您正在寻找具有特定选择Locale的{​​{3}}(如英语,因为您已声明它可以正常运行)。

所以你可以使用这样的东西:

Collections.sort(yourArray, Collator.getInstance(new Locale("en", "US")));

答案 1 :(得分:0)

我认为在语言不包含这些字母的语言环境中对字母进行排序时,您需要期待一些看似随意的问题。排序规则可能会指定排序但不遵循您希望的规则。例如,在美国英语中,ñ和ณ之间的正确排序是什么?

一个选项是在每种语言中都有一个单独的列表,您只想使用该语言中的字母进行排序。 (如果这不起作用,那么,一旦你走了那么远,你可以在每个列表中有一个固定的顺序。)