今天同事遇到一个问题,需要在List中存放Map,每个map只存储一对值。
需要按值排序。
勾起了记忆深处的java 比较器。这玩意不常用,估计很多人都没怎么用过。
觉得有点意思,特意贴出来。
Public class Test{
public void test(){
List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>();
Map<String,Integer> t1 = new HashMap<String,Integer>();
Map<String,Integer> t2 = new HashMap<String,Integer>();
Map<String,Integer> t3 = new HashMap<String,Integer>();
Map<String,Integer> t4 = new HashMap<String,Integer>();
t1.put("a", 1);
t2.put("b", 2);
t3.put("c", 3);
t4.put("d", 1);
list.add(t1);
list.add(t2);
list.add(t3);
list.add(t4);
Collections.sort(list, new MapCompare());
System.out.println(list);
}
private class MapCompare implements Comparator<Map<String,Integer>>{
public int compare(Map<String,Integer> o1, Map<String,Integer> o2) {
int value1 = o1.entrySet().iterator().next().getValue();
int value2 = o2.entrySet().iterator().next().getValue();
return value1-value2;
}
}
}