如何排序包含汉字的列表

时间:2012-04-04 08:38:55

标签: java android sorting

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

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

如何排序?

4 个答案:

答案 0 :(得分:2)

使用正常排序,例如:

Collections.sort(list);

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

Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
         // some own compare method...
    } 
});

答案 1 :(得分:1)

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

修改

比较方法中逻辑的近似伪代码:

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

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

答案 2 :(得分:0)

更好的方法是将其翻译为英语(see here),然后使用Comparator对其进行排序。

答案 3 :(得分: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;
    }
 });