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 stream, map, Option 等函数式编程的使用例子