使用BeanComparator对映射的属性进行排序

时间:2016-06-15 13:56:42

标签: java comparator apache-commons-beanutils

我有一个具有普通属性的对象列表和一个自定义字段值的哈希映射,并且我试图找到一种方法来根据该地图中自定义字段的值进行排序。

示例类:

class Result {

    int id;
    String name;
    Date date;

    Map customFields; 

    int getId() {
        return id;
    }

    etc....

    String getCustomField(String fieldId) {
        return customFields.get(fieldId);
    }

    public void setCustomField(String fieldId, Object value) {
        customFields.put(fieldId, value);
    }

}

将BeanComparator与"正常"一起使用属性列表排序很好。但尝试使用映射属性会给我:

java.lang.RuntimeException:NoSuchMethodException:java.lang.NoSuchMethodException:bean类Result上的未知属性' customField' +

以下是我尝试做的事情:

ComparatorChain chain = new ComparatorChain();
chain.addComparator(new BeanComparator("customField(field99)"));

Collections.sort(results, chain);

有什么想法吗?

TIA

1 个答案:

答案 0 :(得分:0)

我找到了。问题是Getter应该返回Object而不是String。