有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在所有语言中按字母升序对国家/地区进行排序

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

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

enter image description here


共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

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

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

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