我需要在客户端GWT代码中基于MyDto.name对List进行排序。目前我正在尝试这样做......
Collections.sort(_myDtos, new Comparator<MyDto>() {
@Override
public int compare(MyDto o1, MyDto o2) {
return o1.getName().compareTo(o2.getName());
}
});
不幸的是,排序不是我所期望的,因为大写的任何东西都是小写的。例如,ESP出现在aESP之前。
答案 0 :(得分:12)
这是你想要的坏男孩:String.CASE_INSENSITIVE_ORDER
答案 1 :(得分:2)
那是因为大写字母来自小写字母。听起来你想要一个不区分大小写的比较:
Collections.sort(_myDtos, new Comparator<MyDto>() {
@Override
public int compare(MyDto o1, MyDto o2) {
return o1.getName().toLower().compareTo(o2.getName().toLower());
}
});
toLower()是你的朋友。
答案 2 :(得分:1)
我通常会选择这个:
@Override
public int compare(MyDto o1, MyDto o2) {
return o1.getName().compareToIgnoreCase(o2.getName());
}
因为在我看来,无论你做什么字符串操作(toLower()或toUpper())都会变得效率低下。这样,至少你不会创建两个新的字符串。