1.原始数据展示
//创造一个集合数据
public static List<Map<String,Object>> getList(){
List<Map<String,Object>> result_list = new ArrayList<>();
Map<String,Object> map1= new HashMap<>();
map1.put("name", "张三1");
map1.put("age", "18");
map1.put("money", "124.542");
Map<String,Object> map2= new HashMap<>();
map2.put("name", "张三2");
map2.put("age", "45");
map2.put("money", "14.52");
Map<String,Object> map3= new HashMap<>();
map3.put("name", "张三3");
map3.put("age", "12");
map3.put("money", "124.55");
Map<String,Object> map4= new HashMap<>();
map4.put("name", "张三4");
map4.put("age", "5");
map4.put("money", "4324");
Map<String,Object> map5= new HashMap<>();
map5.put("name", "张三5");
map5.put("age", "78");
map5.put("money", "23");
Map<String,Object> map6= new HashMap<>();
map6.put("name", "张三6");
map6.put("age", "13");
map6.put("money", "431.1");
result_list.add(map1);
result_list.add(map2);
result_list.add(map3);
result_list.add(map4);
result_list.add(map5);
result_list.add(map6);
return result_list;
}
控制台输出:[{money=124.542, name=张三1, age=18},
{money=14.52, name=张三2, age=45},
{money=124.55, name=张三3, age=12},
{money=4324, name=张三4, age=5},
{money=23, name=张三5, age=78},
{money=431.1, name=张三6, age=13}]
输出的数据它的money是double类型的,它的age是int类型的,都是无序的,接下来我们跟这两种类型的分别做下排序
针对Double类型的排序(对map中的money进行倒序)
public static void main(String[] args) {
List<Map<String,Object>> list = getList();
System.out.println("排序前-->"+list);
if(list != null && list.size() >1){
Collections.sort(list, new Comparator<Map<String,Object>>(){
@Override
public int compare(Map<String, Object> o1,Map<String, Object> o2) {
Double o1Value = Double.parseDouble(o1.get("money").toString());
Double o2Value = Double.parseDouble(o2.get("money").toString());
return o2Value.compareTo(o1Value);
}
});
}
System.out.println("排序后-->"+list);
}
结果展示:
排序前-->[{money=124.542, name=张三1, age=18}, {money=14.52, name=张三2, age=45}, {money=124.55, name=张三3, age=12}, {money=4324, name=张三4, age=5}, {money=23, name=张三5, age=78}, {money=431.1, name=张三6, age=13}]
排序后-->[{money=4324, name=张三4, age=5}, {money=431.1, name=张三6, age=13}, {money=124.55, name=张三3, age=12}, {money=124.542, name=张三1, age=18}, {money=23, name=张三5, age=78}, {money=14.52, name=张三2, age=45}]
针对int类型的排序(对map中的age进行倒序)
public static void main(String[] args) {
List<Map<String,Object>> list = getList();
System.out.println("排序前-->"+list);
if(list != null && list.size() >1){
Collections.sort(list, new Comparator<Map<String,Object>>(){
@Override
public int compare(Map<String, Object> o1,Map<String, Object> o2) {
Integer o1Value = Integer.parseInt(o1.get("age").toString());
Integer o2Value = Integer.parseInt(o2.get("age").toString());
return o2Value.compareTo(o1Value);
}
});
}
System.out.println("排序后-->"+list);
}
结果展示:
排序前-->[{money=124.542, name=张三1, age=18}, {money=14.52, name=张三2, age=45}, {money=124.55, name=张三3, age=12}, {money=4324, name=张三4, age=5}, {money=23, name=张三5, age=78}, {money=431.1, name=张三6, age=13}]
排序后-->[{money=23, name=张三5, age=78}, {money=14.52, name=张三2, age=45}, {money=124.542, name=张三1, age=18}, {money=431.1, name=张三6, age=13}, {money=124.55, name=张三3, age=12}, {money=4324, name=张三4, age=5}]
有倒序就应该有正序,如何正序呢?
只需要将之前return的o1value 和o2Value的位置换一下就可以了
结果展示:
排序前-->[{money=124.542, name=张三1, age=18}, {money=14.52, name=张三2, age=45}, {money=124.55, name=张三3, age=12}, {money=4324, name=张三4, age=5}, {money=23, name=张三5, age=78}, {money=431.1, name=张三6, age=13}]
排序后-->[{money=4324, name=张三4, age=5}, {money=124.55, name=张三3, age=12}, {money=431.1, name=张三6, age=13}, {money=124.542, name=张三1, age=18}, {money=14.52, name=张三2, age=45}, {money=23, name=张三5, age=78}]
java8实现排序分组函数合计值实例:https://blog.csdn.net/weixin_43865196/article/details/98209760