Java 在所有语言中按字母升序对国家进行排序

Java 在所有语言中按字母升序对国家进行排序,java,android,sorting,java-8,Java,Android,Sorting,Java 8,我正在为市场调查开发一个android应用程序。在注册页面上,我有一个微调器来列出所有国家,我使用函数Arrays.sort()按字母升序对列表进行排序。我将我的平板电脑语言保留为“英语”,并获得了按字母顺序排列的列表 但是,当我将平板电脑语言更改为葡萄牙语时,显示的列表没有排序(请参见随附的屏幕截图)。这种语言有一些不同于英语的字母表。我知道java根据字符的ASCII码执行排序。但是,无论使用哪种语言,是否还有其他方法可以获得排序结果呢 我认为您正在寻找一个具有特定选择的语言环境(就像英语一

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

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


我认为您正在寻找一个具有特定选择的
语言环境
(就像英语一样,因为您已经声明它可以正常工作)

所以你可以用这样的方法:

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

我认为,在一个语言不包括这些字母的区域中对字母进行排序时,您需要期待一些看似任意的行为。排序规则可以指定顺序,但不能遵循您希望的规则。例如,在美式英语中,ñ和之间的正确顺序是什么ณ?


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

看起来你的列表确实是根据语言排序的。这只是因为字符代码大于Z.,你可能需要考虑这个解决方案: