3

我有一个字符串列表,其中一些包含一些汉字:

List<String> list = new ArrayList<String>();
list.add("安卓");
list.add("iPhone");
list.add("WindowsMobile");
list.add("苹果");
list.add("Ubuntu");
list.add("Windows7");

我该如何排序?

4

4 回答 4

1

使用正常排序,例如:

Collections.sort(list);

如果您需要一些自定义排序,您可以实现自己的比较器:

Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
         // some own compare method...
    } 
});
于 2012-04-04T08:41:15.490 回答
1

Collections.sort 使用您自己的比较器绝对是一个开始。要创建一个比较器,请让一个类实现Comparator并实现它的 compare 方法。然后,实例化一个对象并将其传递给 Collections.sort 方法。

编辑:

compare 方法内部逻辑的近似伪代码:

IF s1 isChinese && s2 isEnglish
    return -1
IF s2 isChinese && s1 isEnglish
    return 1
IF s1 isChinese && s2 isChinese 
    //implement your custom way to sort stuff
IF s1 isEnglish && s2 isEnglish 
    //implement your custom way to sort stuff

这样,您的中文单词将出现在顶部而不是底部。

于 2012-04-04T08:41:26.710 回答
0

更好的方法是将其翻译成英文(见此处),然后使用 Comparator 对其进行排序。

于 2012-04-04T08:49:13.637 回答
0

你可以用Collator.getInstance(Locale.CHINESE)代码来做到这一点:

Collections.sort(yourlist, new Comparator<String>() {
    @Override
    public int compare(Stringa1, Stringa2) {
        Collator collator = Collator.getInstance(Locale.CHINESE);
        int mySort = collator.compare(a1, a2);
        return mySort;
    }
 });
于 2021-01-08T02:12:54.800 回答