可以使用Collections.sort()方法对List进行排序。
假设需要按照Map中某一指定键的值来进行升序或者降序排序,可以编写如下代码:
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.Map;
public class MapComparator implements Comparator {
private String key; //Map的key
private String comperValue; //up:升序,down:降序
public MapComparator(String key,String comperValue) {
this.key = key;
this.comperValue = comperValue;
}
@Override
public int comper(Map<String, Object> o1, Map<String, Object> o2) {
//此为BigDecimal为例,如需排序其他类型只需要修改value1、value2的数据类型即可
BigDecimal value1 = new BigDecimal(o1.get(key).toString());
BigDecimal value2 = new BigDecimal(o1.get(key).toString());
if ("up".equals(comperValue)){
return value1.compareTo(value2);
}else {
return value2.compareTo(value1);
}
}
}
调用方法
List<Map<String, Object>> myList = new ArrayList<Map<String, Object>>();
Collections.sort(myList,new MapComparator("value","up"));
System.out.println(myList);
其中,需要将“指定键”替换为需要进行比较的Map中的键名。如果需要进行降序排序,则可以将comperValue值换为down。