基于String在GWT中排序

时间:2010-01-27 17:41:36

标签: java gwt sorting

我需要在客户端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之前。

3 个答案:

答案 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())都会变得效率低下。这样,至少你不会创建两个新的字符串。