java8分组lambda_Java 8,Lambda:在分组列表中排序并将所有组合并到列表中
如果我找对你,你需要一个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:在分组列表中排序并将所有组合并到列表中相关推荐
- python 的列表是从0还是1开始的_Python 列表
列表 列表可以存储成组的信息,可以包含几个元素,也可以包含数百万个元素,列表是用方括号来表示的 定义 列表由一系列按特定顺序排列的元素组成.元素之间可以没有任何关系. 通常命名列表使用复数单词,例如: ...
- python中对列表排序_在Python中对嵌套列表进行排序和分组
在Python中对嵌套列表进行排序和分组 我具有以下数据结构(列表列表) [ ['4', '21', '1', '14', '2008-10-24 15:42:58'], ['3', '22', '4 ...
- Java Lambda 多级分组
Java Lambda 多级分组 public class Menu {/*** 菜品名称*/private String name;/*** 菜品单价*/private Double price;/ ...
- python列表按照字母排序_Python:按字母顺序对列表进行排序/分组
我觉得这已经被问到了,但是这些问题的答案对我的代码没有效果. 我试图根据第一个列表[2]按字母顺序对列表进行排序,然后在按列表[3]和列表[4]排序的匹配条目内对列表进行排序,依此类推.真实的数据更大 ...
- JAVA8新特性之Stream流分组
Apple apple01 = new Apple(1, "red", 100, "成都");Apple apple02 = new Apple(2, &quo ...
- java 8 stream_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
1. lambda表达式 1.1 什么是lambda 以java为例,可以对一个java变量赋一个值,比如int a = 1,而对于一个方法,一块代码也是赋予给一个变量的,对于这块代码,或者说被赋给变 ...
- java8新特性【Lambda、Stream API、Optional、Date Time API 、并行流与串行流】
文章目录 Lambda 表达式 Lambda 表达式的基础语法 方法引用 Lambda 表达式需要"函数式接口"的支持 Java8 内置的四大核心函数式接口 Stream API ...
- Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解
Java8新特性:Lambda 表达式.方法和构造器引用.Stream API.新时间与日期API.注解 1.Java8新特性 1.1.主要的新特性: 1.2.编程风格 2.Lambda 表达式 2. ...
- lamda list 分组_java8lambda表达式对集合分组并且排序(记一次性能优化案例)
最近遇到个需求是这样的: 写一个类似于通讯录的简单功能,要求是首先按照部门显示列表,然后点击部门下拉显示部门里面的人员信息,且人员信息按照职位排序. 先分析数据结构: 最外层是部门,部门里面是员工,且 ...
- java 8中排序_如何在JAVA 8中一起使用分组和排序
参见英文答案 > Java 8 is not maintaining the order while grouping 2个 ...
最新文章
- Yes, Prime Minister 打表找规律-质数
- OpenCV点分类器points classifier的实例(附完整代码)
- MT6580热设计要求
- vgh电压高了有什么_一文告诉你电压互感器的作用是什么?
- 关于大型网站技术演进的思考(二)--存储的瓶颈(2)
- GNOME如何使用Git
- 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
- MySQL备份之mysqlhotcopy与注意事项
- 二分--1043 - Triangle Partitioning
- java如何配置环境变量_java如何配置环境变量
- xcap 发包工具 使用帮助
- 新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied for use的解决办法
- 几款百度竞价点击软件测评来一发
- 简易版牛奶布丁的做法 没烤箱照样做布丁
- 【转载】如何从win8/8.1中文版(核心版)升级到win8/8.1专业版
- (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]
- 良知VS野心,苹果为何要翻新手机?
- js中foreach有三种写法,你知道吗
- iPhone12无法连接电脑的热点
- 量化交易资源汇总《1》
热门文章
- Win10 卸载了某软件,右键还有该软件,如何删除呢?
- QQ交谈代码一键加好友开网页聊天代码
- matlab对角替换,matlab矩阵对角最大化实现
- CSS实现自适应下保持宽高比
- SCDM学习笔记(1)
- mac 安装apk包 =》 adb (安装android 包)
- php match_PHP8.0新功能之Match表达式的使用
- 当我们做实验的时候,我们在做什么?
- c语言程序 实现简单计算器功能,C语言实现简单计算器功能(1)
- python用tkinter做简易计算器实验报告_Python Tkinter实现简易计算器功能