如何对Map对象列表进行排序?

时间:2014-09-26 19:14:00

标签: java list

我有一个List<Map> myList,其中每个地图对象都有一个名为priority的密钥,我想按priority对此列表进行排序。我不知道,我该怎么做呢。

3 个答案:

答案 0 :(得分:2)

  

每个地图对象都有一个名为priority

的键

所以我想,map键集包含字符串。此外,如果要比较 priority 键的返回值,则此对象可以实现Comparable。

Collections.sort(myList, new Comparator<Map<String,E extends Comparable>>(){

    @Override
    public int compare(Map<String,E extends Comparable> a, Map<String,E extends Comparable> b){
        return a.get("priority").compareTo(b.get("priority"));
        //alternative:
        //if(a.get("priority").equals(b.get("priority"))return 0;
        //if(a.get("priority") > (b.get("priority"))return 1;
        //return -1;
    }
})

答案 1 :(得分:1)

public class MyComparator implements Comparator<Map> { public void compare (Map m1, Map m2) { return ((Integer)m1.get("priority")).compareTo(m2.get("priority"))); } } // ... list.sort(new MyComparator());

如果不使用整数

,则将整数转换替换为另一个Number子类

答案 2 :(得分:1)

如果使用Java8

myList
.stream()
.sorted((obj1, obj2) -> Integer.compare(obj1.get("Priority"), obj2.get("Priority"))
.collect(Collectors.toList())
相关问题