一、代码

public class Test {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "ZK");
map.put("age", 13); Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "ZA");
map2.put("age", 15); Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("name", "CX");
map3.put("age", 20); Map<String, Object> map4 = new HashMap<String, Object>();
map4.put("name", "CX");
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); // 排序代码如下
List<Map<String, Object>> collect = list.stream().sorted(Comparator.comparing(Test::comparingByName)
.thenComparing(Comparator.comparing(Test::comparingByAge).reversed()))
.collect(Collectors.toList());
} private static String comparingByName(Map<String, Object> map){
return (String) map.get("name");
} private static Integer comparingByAge(Map<String, Object> map){
return (Integer) map.get("age");
}
}

二、代码介绍

用到的一些Java8的东西
主要首先是stream了,list.stream()这里是把map的List集合变成map的流
然后就是Test::comparingByName这种中间加::表示方法引用
其次就是关键的stream.sorted()方法,参数是传一个比较器Comparator,这里由JDK自带的Comparator.comparing工具方法可以帮你构建一个按照xx属性进行比较的比较器,默认是升序
然后是比较器Comparator支持thenComparing方法,表示按照一定的比较顺序把各个比较连接起来比较
其次是比较器Comparator的reversed方法,可以让比较器的原始顺序逆序,这也正好满足题主需要按照age逆序排列的要求
最后就是collect()方法,把流的数据按照一定的方式收集起来,参数是一个收集器collector,这里用的是JDK自带的工具方法Collectors.toList把流的数据收集为集合

List<Map<String, Object>> 排序的更多相关文章

  1. Java Map排序

    Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...

  2. C++ map排序(按照value值排序)_glp_hit_新浪博客

    C++ map排序(按照value值排序)_glp_hit_新浪博客     C++ map排序(按照value值排序)    (2012-07-12 14:19:51)    转载▼    标签:  ...

  3. STL容器——对map排序

    STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入 ...

  4. Java | Map排序,工具类改进

    package util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...

  5. Map排序

    HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 ...

  6. Map排序——按key排序,按value排序

    注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...

  7. Map排序(按key/按value)

    package com.abc.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collecti ...

  8. Map 排序

    /** * 通过map 的 value 排序,并返回排序后的第一个条目 * * @param m 待排序集合 * @param desc true:降序排序,false:升序排序 * @return ...

  9. stl之map 排序

    排序问题,STL中默认是采用小于号来排序的,因为设置int等类型做key,它本身支持小于号运算,在一些特殊情况,比如关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作,insert等函数 ...

  10. java 对map排序

    public static Map<String, String> sortMapByKey(Map<String, String> map) { if (map == nul ...

随机推荐

  1. Jenkinsfile之语法

    Pipeline支持两种语法:Declarative(在Pipeline 2.5中引入)和Scripted Pipeline.两者都支持建立连续输送Pipeline.两者都可以用于在Web UI或者a ...

  2. Jenkins篇-安装与使用

    Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务.Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通过下载和运行其Web应用程序存档(WAR ...

  3. Abp Vnext Vue Element UI实现

    Abp Vnext Vue Element UI实现版本开箱即用的中后台前端/设计解决方案 链接 AbpPro Vben5 Vue Element Plus 预览 点击查看效果 文档地址 点击查看文档 ...

  4. C#日期类型转化总结【转化,农历,节气,星期】

    转为日期类型 将8位日期字符串转换为日期格式 dateStr = "20220203"; System.IFormatProvider format=new System.Glob ...

  5. 对于web性能优化我有话说!

    web性能是什么呢? 简单来说就是咱们的项目打开的快不快,举以下几个例子 表单提交 列表切换 动画的流程性 打开速度 MDN上对web性能的定义则是Web性能是网站或应用程序的客观度量和可感知的用户体 ...

  6. uni-app小程序(快手)日志打印坑位记录

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在开发一 ...

  7. 对象存储 AVIF 图片压缩,邀您参与免费内测!

    对象存储 AVIF 图片压缩免费内测正式开放!AVIF 作为压缩图片中的新主力军,都有哪些特点呢?通过对象存储又要如何使用 AVIF 压缩呢?这篇文章将深入浅出的为您介绍~ ​具体介绍 现在硬件设备越 ...

  8. adduser和addgroup命令讲解

    https://wiki.alpinelinux.org/wiki/Setting_up_a_new_user 在Alpine Linux下创建用户和组命令分别是adduser和addgroup,本文 ...

  9. Alpine介绍与apk的基本使用

    前言 Alpine是一个面向安全的轻量级的Linux发行版,相比与CentOS,ubuntu体积小很多,大约只有5M左右,由于体积小的原因,在很多场景下都会使用它来按需制作一些轻量级镜像,虽然体积小但 ...

  10. maven打jar包运行main方法

    pom文件添加上这段 <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</ ...