2

我有这个 LinkedHashMap 列表,如何才能获得价值?

    List<LinkedHashMap<String, Object>> list = more "key:value"......

例如在我的清单上,我有:

    [{"field1": "z", "field2":"a"},
     {"field1" : "b", "field2":"x"}]

我想根据“field1”键的值进行排序,例如:

    [{"field1": "b", "field2":"x"},
     {"field1" : "z", "field2":"a"}]

我做了这门课:

public class OrderComparator  implements Comparator {
    String field;

    public OrderComparator (String field){
        this.field = field;
    }

    @Override
    public int compare(Object obj1, Object obj2) {
          LinkedHashMap<String, Object> a = (LinkedHashMap<String, Object>) obj1;
          LinkedHashMap<String, Object> b = (LinkedHashMap<String, Object>) obj2;

          return a.get(this.field).toString().compareTo(b.get(this.field).toString());
    }   
}

和 :

Collections.sort(list, new OrderComparator(sortColumn));

是正确的?谢谢大家!!!

4

2 回答 2

5

编写一个Comparator<Map<String,Object>>并使用Collections.sort(list, comparator)来对您的地图列表进行排序。

请参阅Java 教程>集合跟踪>对象排序

于 2013-05-23T08:40:51.023 回答
3

使用自定义Comparator

Collections.sort(list, new Comperator<Map<String, Object>>() {
    public int compare(Map<String, Object> a, Map<String, Object> b) {
        return a.get("field1").compareTo(b.get("field1"));
    }
});
于 2013-05-23T08:43:28.007 回答