使用特殊字符(如重音符号)排序数组

JLL*_*CHR 11 java arrays character-encoding

有人知道如何使用带有特殊字符(如重音符号)的单词来命令数组吗?

Arrays.sort(anArray);

'Albacete'以前回来'Álava',我想要'Álava'之前'Albacete'.

非常感谢

aio*_*obe 21

如果您只想对字符串进行排序,就好像它们没有重音一样,您可以使用以下内容:

Collections.sort(strs, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        o1 = Normalizer.normalize(o1, Normalizer.Form.NFD);
        o2 = Normalizer.normalize(o2, Normalizer.Form.NFD);
        return o1.compareTo(o2);
    }
});
Run Code Online (Sandbox Code Playgroud)

相关问题:

对于更复杂的用例,您需要阅读java.text.Collator.这是一个例子:

Collections.sort(strs, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        Collator usCollator = Collator.getInstance(Locale.US);
        return usCollator.compare(o1, o2);
    }
});
Run Code Online (Sandbox Code Playgroud)

如果没有预定义的排序规则符合您的需求,您可以尝试使用java.text.RuleBasedCollator.