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

x33g5p2x  于2021-12-06 转载在 Java  
字(1.3k)|赞(0)|评价(0)|浏览(418)

最近在优化系统,其中常见性能瓶颈为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博客

相关文章

微信公众号

最新文章

更多