Java 如何对包含汉字的列表进行排序

Java 如何对包含汉字的列表进行排序,java,android,sorting,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"); List List=new ArrayList(); 列表。添加(“安卓"); 列表。添加(“iP

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

List<String> list = new ArrayList<String>();
list.add("安卓");
list.add("iPhone");
list.add("WindowsMobile");
list.add("苹果");
list.add("Ubuntu");
list.add("Windows7");
List List=new ArrayList();
列表。添加(“安卓");
列表。添加(“iPhone”);
列表。添加(“WindowsMobile”);
列表。添加(“苹果");
添加(“Ubuntu”);
列表。添加(“Windows7”);

如何排序?

使用普通排序,例如:

Collections.sort(list);
如果您需要一些自定义排序,您可以实现自己的比较器:

Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
         // some own compare method...
    } 
});
Collections.sort(列表,新比较器(){
公共整数比较(字符串s1、字符串s2){
//一些自己的比较方法。。。
} 
});

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

编辑:

比较方法内部逻辑的近似psuedocode:

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

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

更好的方法是将其翻译成英文,然后使用Comparator对其排序。

您可以使用
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;
    }
 });
Collections.sort(yourlist,newcomparator(){
@凌驾
公共整数比较(Stringa1、Stringa2){
Collator-Collator=Collator.getInstance(Locale.CHINESE);
int mySort=collator.compare(a1,a2);
返回mySort;
}
});

我已经尝试过了,结果显示汉字位于底部。我希望它按照第一个字母显示,而不是按照您的比较方法当时没有正确实现的语言显示。返回-1表示比较方法的第一个参数将放在列表中第二个参数之前。返回0表示param1和param2没有特定的顺序。返回1表示param2要放在前面。