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