如果我找对你,你需要一个List< Student> (不是地图)学生按其位置分组,并按组内的ID排序,组中的组也按ID排序,而不是按位置名称排序.这是可能的,但需要一个分组和两个排序:

//first,use your function to group students

Map> studlistGrouped = students.stream()

.collect(Collectors.groupingBy(Student::getLocation,Collectors.toList()));

//then sort groups by minimum id in each of them

List sorted = studlistGrouped.entrySet().stream()

.sorted(Comparator.comparing(e -> e.getValue().stream().map(Student::getId).min(Comparator.naturalOrder()).orElse(0)))

//and also sort each group before collecting them in one list

.flatMap(e -> e.getValue().stream().sorted(Comparator.comparing(Student::getId))).collect(Collectors.toList());

这将产生以下结果:

Student{id='1726',name='John',location='New York'}

Student{id='3442',name='Mark',location='New York'}

Student{id='5223',name='Michael',location='New York'}

Student{id='2234',name='Andrew',location='Los Angeles'}

Student{id='4321',name='Max',location='California'}

Student{id='7765',name='Sam',location='California'}

也许这可以更优雅地完成,欢迎提出建议

编辑:在写这个答案的时候,没有提到基于OPs问题中原始列表中元素顺序的分组.所以我的假设是按ID分类列表和组.对于基于原始列表中的顺序的解决方案,请参阅其他答案,例如,Holgers one

java8分组lambda_Java 8,Lambda:在分组列表中排序并将所有组合并到列表中相关推荐

  1. python 的列表是从0还是1开始的_Python 列表

    列表 列表可以存储成组的信息,可以包含几个元素,也可以包含数百万个元素,列表是用方括号来表示的 定义 列表由一系列按特定顺序排列的元素组成.元素之间可以没有任何关系. 通常命名列表使用复数单词,例如: ...

  2. python中对列表排序_在Python中对嵌套列表进行排序和分组

    在Python中对嵌套列表进行排序和分组 我具有以下数据结构(列表列表) [ ['4', '21', '1', '14', '2008-10-24 15:42:58'], ['3', '22', '4 ...

  3. Java Lambda 多级分组

    Java Lambda 多级分组 public class Menu {/*** 菜品名称*/private String name;/*** 菜品单价*/private Double price;/ ...

  4. python列表按照字母排序_Python:按字母顺序对列表进行排序/分组

    我觉得这已经被问到了,但是这些问题的答案对我的代码没有效果. 我试图根据第一个列表[2]按字母顺序对列表进行排序,然后在按列表[3]和列表[4]排序的匹配条目内对列表进行排序,依此类推.真实的数据更大 ...

  5. JAVA8新特性之Stream流分组

    Apple apple01 = new Apple(1, "red", 100, "成都");Apple apple02 = new Apple(2, &quo ...

  6. java 8 stream_深度分析:java8的新特性lambda和stream流,看完你学会了吗?

    1. lambda表达式 1.1 什么是lambda 以java为例,可以对一个java变量赋一个值,比如int a = 1,而对于一个方法,一块代码也是赋予给一个变量的,对于这块代码,或者说被赋给变 ...

  7. java8新特性【Lambda、Stream API、Optional、Date Time API 、并行流与串行流】

    文章目录 Lambda 表达式 Lambda 表达式的基础语法 方法引用 Lambda 表达式需要"函数式接口"的支持 Java8 内置的四大核心函数式接口 Stream API ...

  8. Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解

    Java8新特性:Lambda 表达式.方法和构造器引用.Stream API.新时间与日期API.注解 1.Java8新特性 1.1.主要的新特性: 1.2.编程风格 2.Lambda 表达式 2. ...

  9. lamda list 分组_java8lambda表达式对集合分组并且排序(记一次性能优化案例)

    最近遇到个需求是这样的: 写一个类似于通讯录的简单功能,要求是首先按照部门显示列表,然后点击部门下拉显示部门里面的人员信息,且人员信息按照职位排序. 先分析数据结构: 最外层是部门,部门里面是员工,且 ...

  10. java 8中排序_如何在JAVA 8中一起使用分组和排序

    参见英文答案 > Java 8 is not maintaining the order while grouping                                    2个 ...

最新文章

  1. Yes, Prime Minister 打表找规律-质数
  2. OpenCV点分类器points classifier的实例(附完整代码)
  3. MT6580热设计要求
  4. vgh电压高了有什么_一文告诉你电压互感器的作用是什么?
  5. 关于大型网站技术演进的思考(二)--存储的瓶颈(2)
  6. GNOME如何使用Git
  7. 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
  8. MySQL备份之mysqlhotcopy与注意事项
  9. 二分--1043 - Triangle Partitioning
  10. java如何配置环境变量_java如何配置环境变量
  11. xcap 发包工具 使用帮助
  12. 新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied for use的解决办法
  13. 几款百度竞价点击软件测评来一发
  14. 简易版牛奶布丁的做法 没烤箱照样做布丁
  15. 【转载】如何从win8/8.1中文版(核心版)升级到win8/8.1专业版
  16. (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]
  17. 良知VS野心,苹果为何要翻新手机?
  18. js中foreach有三种写法,你知道吗
  19. iPhone12无法连接电脑的热点
  20. 量化交易资源汇总《1》

热门文章

  1. Win10 卸载了某软件,右键还有该软件,如何删除呢?
  2. QQ交谈代码一键加好友开网页聊天代码
  3. matlab对角替换,matlab矩阵对角最大化实现
  4. CSS实现自适应下保持宽高比
  5. SCDM学习笔记(1)
  6. mac 安装apk包 =》 adb (安装android 包)
  7. php match_PHP8.0新功能之Match表达式的使用
  8. 当我们做实验的时候,我们在做什么?
  9. c语言程序 实现简单计算器功能,C语言实现简单计算器功能(1)
  10. python用tkinter做简易计算器实验报告_Python Tkinter实现简易计算器功能