我有一个包含字符串的列表,其中一些包含一些中文字符:
List<String> list = new ArrayList<String>();
list.add("安卓");
list.add("iPhone");
list.add("WindowsMobile");
list.add("苹果");
list.add("Ubuntu");
list.add("Windows7");
如何排序?
答案 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;
}
});