JAVA8中对List<map<String,Object>>根据map某个value值进行排序,还支持中文排序,可以替代order by

Posted 秋9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA8中对List<map<String,Object>>根据map某个value值进行排序,还支持中文排序,可以替代order by相关的知识,希望对你有一定的参考价值。

最近在优化系统,其中常见性能瓶颈为group by和order by联合使用,下面使用java来实现order by,以提高SQL性能。

直接上代码:


import com.example.jdk8.java.common.ChineseComparator;

import java.util.*;
import java.util.stream.Collectors;

public class ListMapStreamSort 
    public static void main(String[] args) 
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "高一(1)班");
        map.put("age", 13);

        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("name", "高一(11)班");
        map2.put("age", 15);

        Map<String, Object> map3 = new HashMap<String, Object>();
        map3.put("name", "高一(1)班");
        map3.put("age", 20);

        Map<String, Object> map4 = new HashMap<String, Object>();
        map4.put("name", "高一(2)班");
        map4.put("age", 18);

        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        list.add(map);
        list.add(map2);
        list.add(map3);
        list.add(map4);
        System.out.println("排序前:"+list);
        List<Map> collect =
                list.stream().sorted((o1, o2) -> ChineseComparator.compareString(o1.get("name")+"",o2.get("name")+""))
                        .collect(Collectors.toList());

        System.out.println("排序后:"+collect);
    

执行结果为:

 ChineseComparator类,请见Java8对中文汉字排序的Comparator实现类_一火的专栏-CSDN博客

以上是关于JAVA8中对List<map<String,Object>>根据map某个value值进行排序,还支持中文排序,可以替代order by的主要内容,如果未能解决你的问题,请参考以下文章

Java8之集合排序

java8 stream, map, Option 等函数式编程的使用例子

java8 stream, map, Option 等函数式编程的使用例子

Java中对listmap根据map某个key值进行排序

Java8中list转map

使用java8将list转为map(转)