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要放在前面。