我有一个字符串列表,其中一些包含一些汉字:
List<String> list = new ArrayList<String>();
list.add("安卓");
list.add("iPhone");
list.add("WindowsMobile");
list.add("苹果");
list.add("Ubuntu");
list.add("Windows7");
我该如何排序?
使用正常排序,例如:
Collections.sort(list);
如果您需要一些自定义排序,您可以实现自己的比较器:
Collections.sort(list, new Comparator<String>() {
public int compare(String s1, String s2) {
// some own compare method...
}
});
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
这样,您的中文单词将出现在顶部而不是底部。
更好的方法是将其翻译成英文(见此处),然后使用 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;
}
});