前言:

随着Java 8 的

Stream

之后推出后可以很优雅实现Map的排序。

示例:

final Map<String, Integer> wordCounts = new HashMap<>();
wordCounts.put("USA", 100);
wordCounts.put("jobs", 200);
wordCounts.put("software", 50);
wordCounts.put("technology", 70);
wordCounts.put("opportunity", 200);//{USA=100, software=50, jobs=200, opportunity=200, technology=70}复制代码

按升序对值进行排序,使用

LinkedHashMap

存储排序结果来保留结果映射中元素的顺序

1、正向
final Map<String, Integer> sortedByCount = wordCounts.entrySet().stream().sorted(Map.Entry.comparingByValue()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));//{software=50, technology=70, USA=100, jobs=200, opportunity=200}2、反向 reversed
final Map<String, Integer> sortedByCount1 = wordCounts.entrySet().stream().sorted((Map.Entry.<String, Integer>comparingByValue().reversed())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));//{jobs=200, opportunity=200, USA=100, technology=70, software=50}复制代码

推荐

sorted()

方法将

Comparator

作为参数使用任何类型的值对映射进行排序。上面的排序可以用

Comparator

写成:

//正向 final Map<String, Integer> sortedByCount3 = wordCounts.entrySet().stream().sorted((e1, e2) -> e1.getValue().compareTo(e2.getValue())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
//{software=50, technology=70, USA=100, jobs=200, opportunity=200}//反向 == reversed()
final Map<String, Integer> sortedByCount2 = wordCounts.entrySet().stream().sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));//{jobs=200, opportunity=200, USA=100, technology=70, software=50}
复制代码

转载于:https://juejin.im/post/5cf6044cf265da1bb13f1db1

Java8 对Map进行排序相关推荐

  1. java8新特性:对map集合排序

    一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...

  2. java8新特性:对map集合排序,根据key或者value操作排序(升序、降序)

    java8新特性:对map集合排序,根据key或者value操作排序(升序.降序) 直接上代码: package com.drew.test; import java.util.List; impor ...

  3. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序

    在这篇文章中,您将学习如何使用Java对Map按照键或值进行排序.前几日有位朋友面试遇到了这个问题,看似很简单的问题,但是如果不仔细研究一下也是很容易让人懵圈的面试题.所以我决定写这样一篇文章.在Ja ...

  4. Java8 Lambda表达式 ArrayList排序

    Java7和 Java8对 List进行排序实例: package com.dc.utils;import java.util.*; /*** @author hdc* @date 2019/2/25 ...

  5. C++map容器-排序

    map容器排序 利用仿函数,可以改变排序规则 代码如下: #include <iostream> using namespace std; #include <map> //m ...

  6. java多字段排序,java8 stream多字段排序的实现

    很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理 使用java8新特性,下面先来点基础的 List list; 代表某集合 //返回 对象集合以类属性一 ...

  7. Java8 stream().map()将对象转换为其他对象

    Java8 stream().map()将对象转换为其他对象 1: 将对象List转为List public class user{private String name;private String ...

  8. 【java】关于Map的排序性的一次使用,有序的Map

    关于Map的排序性的一次使用,有序的Map >>>>> hashmap是按key的hash码排序的,而treemap是利用comparator 进行key的自然排序的 / ...

  9. Java Map 自定义排序

    HashMap是不保证顺序的,要有顺序,要用LinkedHashMap,这是按照插入顺序排列的. Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现与HashMap的不同之处在于,后者维护 ...

最新文章

  1. 数据结构与算法 第二次实验报告堆栈队列
  2. java 扫描包框架_在Android中实现类似Spring的软件包扫描
  3. [Django] 查看orm自己主动运行的原始查询sql
  4. 复现经典:《统计学习方法》第 4 章 朴素贝叶斯
  5. Jar包部署-指定jsp打包配置
  6. 命令行下安装的tensorflow怎么打开_CourseMaker微课制作教程18:录ppt一直“正在打开……”及WPS下ppt满屏放映怎么办?...
  7. 客户端版本和服务器版本上传软件
  8. mysql增删改查 工具类_JDBC工具类实现对数据库数据的增删改查
  9. MongoDB数据库操作---终端操作
  10. 内外网同时使用解决办法
  11. 微软发布 VS Code Jupyter 插件!不止 Python,多语言的 Jupyter Notebook支持来了!
  12. Java-Swing编程介绍
  13. 大厂团队Leader实战秘诀:工程师成长最重要的8项技能
  14. Adobe read X安装过程中出现无法将数值DisableExceptionChainValidation写入键
  15. 黑马程序员---wpf学习笔记四---banding的那些事
  16. glib linux,如何升级glib呢?
  17. win8计算机的录音功能,win8电脑录音机功能在哪|win8录音功能使用方法
  18. 根据地址获取坐标经纬度
  19. socat的安装与使用
  20. C# 学习笔记——PL 并行编程 TPL 和传统 .NET 异步编程

热门文章

  1. “环太平洋”走进现实,五角大楼研发人与武器互动的意念控制技术
  2. Nginx 从安装到高可用
  3. GNN教程:GraghSAGE算法细节详解!
  4. 机器学习训练中常见的问题和挑战!
  5. 特征工程(七)SelectFromModel
  6. 2020年「21篇」医学影像算法最佳综述
  7. 原来这部电影 18 禁?用神经网络“看”剧本,AI 秒给预测评级
  8. 她,诗人拜伦之女,英国数学家,历史上第一位程序员
  9. 当专业动画师用GAN帮自己“偷懒”,几分钟就完成了几周的工作
  10. 这篇博士毕业论文致谢句句诛心......