Stream操作之 先分组再取最大值

简介: Stream操作之 先分组再取最大值

按某个属性分组,并按另一个属性取最大

一个学生列表,来自多个班级,每个班级有若干名学生;取出每个班级中年龄最大的学生,形成一个新的列表;

return new ArrayList<>(studentList.stream()
   .collect(Collectors.toMap(Student::getClassId, Function.identity(),
      (c1, c2) -> c1.getAge() > c2.getAge() ? c1 : c2))
   .values());
  1. 首先转为Map,以班级ID为key,该班级中年龄最大的Student对象为value;
  2. 取出该Map的values;
  3. 塞到ArrayList中并返回;
目录
相关文章
|
JavaScript
TypeScript中模块的导入与导出技术详解
【4月更文挑战第23天】TypeScript模块化通过`export`和`import`实现代码组织。导出包括变量、函数、类、接口,支持命名导出和默认导出。导入时,命名导出使用花括号指定成员,默认导出直接引用,还可使用`as`重命名。模块机制促进代码复用、解耦,提升可维护性。理解并运用这些技术对构建大型应用至关重要。
|
数据采集 Python
使用多线程或异步技术提高图片抓取效率
图片抓取是爬虫技术中常见的需求,但是图片抓取的效率受到很多因素的影响,比如网速、网站反爬机制、图片数量和大小等。本文将介绍如何使用多线程或异步技术来提高图片抓取的效率,以及如何使用爬虫代理IP来避免被网站拒绝服务
371 0
使用多线程或异步技术提高图片抓取效率
|
Java Spring
解决Spring工具类BeanUtils copyProperties方法复制null的问题
解决Spring工具类BeanUtils copyProperties方法复制null的问题
1274 0
|
SQL HIVE
Hive 行列转换
使用`lateral view + explode`或`inline`可将列转换为行,实现数据降维。例如,`explode(array|map)`用于单列转多行,`inline(array_struct)`将结构体数组拆分成多行。同样,通过条件聚合可实现行转列,常用于多行数据聚合到单行中,如示例所示的按月统计订单金额。
542 1
Hive 行列转换
|
存储 Java
使用OutputStreamWriter写入数据
使用OutputStreamWriter写入数据
|
Java 数据库连接 数据库
【微服务】mybatis typehandler使用详解
自定义 `TypeHandler` 的能力使得 MyBatis 在处理特定的数据类型转换时更加灵活和强大,为在微服务架构中构建与数据库交互逻辑提供了极大的便利。它允许我们灵活处理多样化的数据格式,满足业务不断变化的需求。
507 2
|
Java Go C#
proto转java类时相关option配置
proto转java类时相关option配置
238 0
|
Java 开发者 Spring
|
Java 应用服务中间件 Maven
SpringBoot概述&SpringBoot基础配置&yml的使用&多环境启动
SpringBoot概述&SpringBoot基础配置&yml的使用&多环境启动
734 2
|
NoSQL Redis
RedisTemplate.opsForHash()用法简介并举例
RedisTemplate.opsForHash()用法简介并举例
1749 1