正如其他人指出的那样,将已排序的条目流转储到常规HashMap中将无济于事……LinkedHashMap是合乎逻辑的选择.

但是,上述方法的替代方法是充分利用Stream Collectors API.

收集器具有toMap方法,可让您提供Map的替代实现.因此,您可以像下面这样要求LinkedHashMap而不是HashMap:

unsortedMap.entrySet()

.stream()

.sorted(Map.Entry.comparingByKey())

.collect(Collectors.toMap(

Map.Entry::getKey,

Map.Entry::getValue,

(v1, v2) -> v1, // you will never merge though ask keys are unique.

LinkedHashMap::new

));

在使用TreeMap与LinkedHashMap之间…构造的复杂性可能类似于O(n log n)…显然,如果您打算继续向其中添加更多元素,则TreeMap解决方案是一种更好的方法.在这种情况下,我想您应该从TreeMap开始. LinkedHashMap选项的优势在于,在链接的或原始未排序的地图上查找将为O(1),而由于TreeMap的查找类似于O(log n),因此如果需要保留未排序的地图以进行有效查找,则如果您构建LinkedHashMap,则可以扔掉原始的未排序地图(从而节省一些内存).

为了使LinkedHashMap的工作效率更高,您应该在构造时提供所需大小的良好估算器,这样就无需动态调整大小,因此,您可以说()->代替LinkedHashMap :: new.新的LinkedHashMap<>(unsortedMap.size()).

我认为TreeMap的使用更加简洁…因为可以使代码更小,因此,除非存在使用未排序和排序的链接映射方法可以解决的实际性能问题,否则我将使用Tree.

java steam 排序_Java使用Steams VS TreeMap对地图进行排序相关推荐

  1. java 容器排序_Java攻略第四章 容器类、排序

    前面就是Java小世界的出口,是不是心中涌起莫名的冲动,想要一步跳出门去?这种心情可以理解,因为你还没有遇到真正的怪物.喂,不要急!在你即将跳出门去的刹那,最好还是看一下这个小东西! 可不要小看它!它 ...

  2. java对日期进行排序_Java对日期时间值的集合进行排序

    我正在使用notes.jar lotus notes api来提取电子邮件的日期和时间.当我将它们添加到集合中时,如果像这样添加它们: Vector times = doc.getItemValueD ...

  3. java excel 多列排序_java poi处理excel多sheet并实现排序

    需求:有一个数据字典全量汇总表,其中第一个sheet为目录,包括编号和表名,第二个以后为表的明细.其中sheet名就是表名但无序,sheet内字段序号无序有空行 现在要求将其中101,104,107, ...

  4. java 查找排序_Java类库中的一些常用的查找排序

    查找是一种试图在数据集或者数组中发现某一目标值的操作 排序是使列表中的元素按照自然顺序进行排序的一种操作 Java的类库中包含来一些可以实现对数组或者列表实现查找和排序的方法. 例如:Arrays.b ...

  5. java steam 去重_Java中对List去重, Stream去重

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  6. java steam 去重_Java中对List去重 Stream去重的解决方法

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  7. java hibernate 自定义排序_Java hibernate如何对条件查询结果集排序?

    在此演示中,您将看到如何对outCriteria查询的结果集进行排序.可以通过org.hibernate.criterion.Order在Criteria对象中添加来完成,我们可以按升序或降序对结果进 ...

  8. java字符排序_Java实现对字符串中的数值进行排序操作示例

    本文实例讲述了Java实现对字符串中的数值进行排序操作.分享给大家供大家参考,具体如下: 问题: 对"34 9 -7 12 67 25"这个字符串中的数值从小到大排序! 解决方法: ...

  9. java list按多个字段排序_java 对象List按照多个字段进行排序

    新建一个对象 public class A { String a; String b; public A() { } public A(String a, String b) { this.a = a ...

最新文章

  1. 解析Makefile文件的构建规则
  2. [Vim 使用]vim 自动括号补全配置
  3. Centos安装图形化界面
  4. JavaScript中的原型(prototype)与继承
  5. 基于源码仿建视频解析网站
  6. MySQL(4) 索引、事务与存储引擎
  7. Java 集合Collection图解
  8. bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项
  9. vSphere vsan 6.5部署之一VCSA6.5安装
  10. ASP.NET Core WebApi AspNetCoreRateLimit 限流中间件学习
  11. 光敏传感器实验-传感器原理及应用实验
  12. 明解c语言实践篇翻译_《明解C语言》PDF版本下载
  13. 电子商务法律法规【1】
  14. 【算法竞赛学习笔记】平衡树专题——替罪羊树
  15. 领导科学 读书笔记(一)
  16. 电脑如何设置定时任务、定时执行 —— 不用Windows任务计划程序,也能轻松设定计划任务、定时任务 —— 定时执行专家
  17. 中关村e谷:产业服务终靠一颗赤诚之心
  18. linux替换屏幕保护进程,有没有一个体面的方式来阻止linux中的屏幕保护程序?...
  19. python使用spark_如何在Python中编写简单代码,并且速度超越Spark?
  20. 线性代数:矩阵列空间 和 方程的解 [中]

热门文章

  1. 原创设计师如何提高影响力?到集设,让你的原创设计作品展示给世界
  2. 平面设计师必备,剪纸风格素材
  3. C++虚函数的实现原理(最通俗但并不想专业的解释)
  4. MyBatis的总结(上)
  5. CPU性能参数的含义
  6. 一次系统调用开销到底有多大?strace、time、perf命令
  7. JVM 垃圾回收算法机制及其实现原理
  8. 网络合作伙伴通信协议指南:NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS
  9. GitHub#C#:在终端里面显示一个UI窗口(TerminalGfx)
  10. Django:保持会话状态cookies和session(1)