场景

List<User>  userList= [{id:1,userName:"张三",roleId:3},{id:2,userName:"李四",roleId:3},{id:3,userName:"王五",roleId:2}
]

List 按 roleId 分组后的map

Map<Integer,List<User>> map = userList.stream().collect(Collectors.groupingBy(User::getRoleId));

希望能够保持原有list的顺序
期望值:

key:3
Value: [{id:1,userName:"张三",roleId:3},{id:2,userName:"李四",roleId:3}]key:2
Value : [{id:3,userName:"王五",roleId:2}]

实际输出为:

key:2
Value : [{id:3,userName:"王五",roleId:2}]key:3
Value: [{id:1,userName:"张三",roleId:3},{id:2,userName:"李四",roleId:3}]

Collectors.groupingBy方法是有三个参数的:

  • 第一个参数就是key的Function
  • 第二个参数是一个map工厂,也就是最终结果的容器,一般默认的是采用的HashMap::new
  • 最后一个参数很重要是一个downstream,类型是Collector,也是一个收集器

所以修改以上方法为:

Map<Integer,List<User>> map = userList.stream().collect(Collectors.groupingBy(User::getRoleId,LinkedHashMap::new,Collectors.toList()));

返回的是期望值,问题解决

关于java8 List转map 分组顺序重排问题相关推荐

  1. R语言dplyr包数据列重排(reorder)实战:把特定数据列移动到第一列、把特定数据列移动到最后一列、数据列多列重排、按照字母顺序重排数据列、把数据列反序

    R语言dplyr包数据列重排(reorder)实战:把特定数据列移动到第一列.把特定数据列移动到最后一列.数据列多列重排.按照字母顺序重排数据列.把数据列反序 目录

  2. 用C语言编写程序,任意输入一个字符串,将其中的字符按从小到大的顺序重排

    思路:将输入字符串中的每个字符转成相应的ASCII码值进行比较,排序. /* 2020-5-6 18:45 作者:nyc 功能:任意输入一个字符串,将其中的字符按从小到大的顺序重排 */ #inclu ...

  3. 外包:.epub格式漫画解压后图片顺序重排

    外包:.epub格式漫画解压后图片顺序重排 前几天接了一个外包需求,需求解决起来很简单,但我认为这个需求本身很有意思,所以发到博客上来. 简单来说是这样的,对方在解压了.epub格式的文件之后, 文件 ...

  4. matlab对矩阵的排列顺序,matlab数组按照指定顺序重排

    需求及实现 直接上例子要说明:比如现在我们有一个b的序列,我们想按照c规定的顺序重排: 实现命令:b(:,c) 意思:b的所有列元素(第二个参数),按照c给定的顺序重排 b = [7 14 -10 1 ...

  5. 二道题:分组顺序向下填充 和 标注数据整理

    分组顺序向下填充 需求 之前群友分享这样一道Pandas题: 应用pandas模块,导入"python_test.xlsx"的excel中的表格数据(2个sheet) 要求: 将s ...

  6. java8 list 转Map的各种写法

    java8 list 转Map: 1.1 public Map<Long, Account> getIdAccountMap(List<Account> accounts) { ...

  7. jdk8中List、map、set间转换(含转Map分组),以及List去重

    一.List.Map.Set间转换(含转Map分组) // List<Org> 转成 Set<Org>集合 Set<Org> orgSet = orgList.st ...

  8. java8 list map 分组_java8 List转Map,并进行分组过滤求和等操作

    定义实体类: public class Person { private String name; private Integer age; public Person() { } public Pe ...

  9. java map分组_java8快速实现List转map 、分组、过滤等操作

    利用java8新特性,可以用简洁高效的代码来实现一些数据处理. 定义1个Apple对象: public class Apple { private Integer id; private String ...

  10. Java8 stream filter map

    java8 中的stream filter map 组合使用能很好的代替for 循环去处理逻辑,而且代码简单明了 public static void main(String[] args) {Lis ...

最新文章

  1. 高级特性-多线程,GUI
  2. linux更改默认版本,linux - 将某个软件版本设为ubuntu中的默认版本 - Ubuntu问答
  3. jatoolsprinter web打印控件直接打印不弹出
  4. 计算机主板等级指标,转载一篇主板文章,教你认识三大厂主板分级
  5. 前端jQuery基本语法
  6. UOJ#244-[UER#7]短路【贪心】
  7. leetcode题解189-旋转数组
  8. python读取数据流_IOError:读取图像fi时数据流中断
  9. python+appium 自动化2--元素定位uiautomatorviewer
  10. Linux自学笔记——iptables
  11. 系统设计---分层,分级,分块
  12. 西门子系列PLC教学视频资源1——S7-200和S7-200smart
  13. asymptotic notation and recursion
  14. 评论列表css样式,评论框CSS样式修改
  15. shardingsphere之sharding-proxy读写分离学习笔记
  16. 关注电动汽车能效水平 提高续航能力
  17. linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT
  18. CSS calc()函数
  19. 【Python 实战基础】Python 中 PyQt6 的 QPen 介绍
  20. 关于HBC路由器设置端口映射

热门文章

  1. OpenCV学习笔记(十一)——模板匹配
  2. BPNN-Belief Propagation Neural Networks
  3. Cortex-M3 (NXP LPC1788)之GPIO
  4. jspx框架使用总结-页面开发
  5. 作业车间调度算法及其应用(一)
  6. 【python】80行代码实现压缩包密码破解软件,支持zip和rar
  7. 最厉害的象棋软件_太牛了!象棋史上最厉害人机高手竟弃车跟软件对杀,就问你敢不敢...
  8. 神舟IV号开发板-带屏例程源码修改bug(2.8寸屏)
  9. 北斗卫星导航系统BDS的星座和信号
  10. 读书笔记-整理的艺术