LinkedHashMap 的订单列表

3
我有一个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());
    }   
}

and :

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

是正确的吗?感谢所有人!!!

(保留HTML,不解释)

请原谅我这样挑剔,但是为了我们的专业和良好的代码风格和文档,您应该将OrderComparable类重命名为OrderComparator,因为该类并没有实现一个“可比较”的对象,而是一个比较器。 - Armen Michaeli
你说得对,我分心了。我最初想用Comparable,但它不起作用,所以我使用了Comparator,谢谢。 - Doom
2个回答

5

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"));
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接