如何使用bean比较器对Integer值存储为String的列表进行排序?

时间:2015-07-17 11:37:54

标签: java list sorting

以下是我的豆子

Person:
String name;
String age;
String designation;

我已经使用BeanComparator在运行时对列表进行排序,如此

if (sortOrd.equals("asc")) {
        Collections.sort(list, new BeanComparator(sortByProperty));
    } else if (sortOrd.equals("desc")) {
        Collections.sort(list, Collections.reverseOrder(new BeanComparator(
                sortByProperty)));

    }

如果我想按年龄排序,那么对于输入10,35,100,25,它被排序为10,100,25,35,因为它被存储为String。

有没有办法获取正确的结果?请帮帮我。

1 个答案:

答案 0 :(得分:0)

您可以为BeanComparator提供自定义的comperator。创建一个解析为 整数并比较它们。

  Collections.sort(list, new BeanComparator(sortByProperty), new Comparator<String>() {
    int compare(String s, String s2) {
    Integer i = Integer.parseInt(s);
    Integer i1 = Integer.parseInt(s2);
return i1 - i;
}
});

类似的东西(未经过测试,在解析之前需要进行一些检查)。