当前位置: 首页
编程语言
Java Lambda表达式如何计算集合元素

Java Lambda表达式如何计算集合元素

热心网友 时间:2026-07-11
转载

Lambda表达式需配合StreamAPI实现集合元素的高效计算。通过stream()将集合转为流,利用mapToInt() sum()求和,average()求平均,max() min()求最值,count()计数,groupingBy结合summingInt averagingInt实现分组聚合,reduce进行自定义归约,覆盖多数数值计算场景,且操作简

说到 Java 中 Lambda 表达式如何用于集合元素计算,核心思路其实很简单:Lambda 本身并不直接执行计算,必须配合 Stream API 才能发挥威力。先将集合转为流(stream()),再通过一条函数式操作链,即可轻松完成求和、平均值、最大值最小值、分组汇总等常见操作。

Ja va 中 Lambda 表达式怎么进行集合元素计算

下面几个高频场景,几乎覆盖了日常开发中绝大多数的数值计算需求。

基础求和:整数列表或对象属性求和

无论是针对 List 还是对象中的某个数值字段,最常用的方式就是借助 mapToInt().sum()

  • list.stream().mapToInt(Integer::intValue).sum() —— 直接计算整数列表的总和
  • users.stream().mapToInt(User::getScore).sum() —— 对 User 对象的 score 字段进行求和
  • 注意:mapToInt 返回的是 IntStream,才能调用 sum();如果误用了 map,返回的是 Stream,则无法直接使用 sum 方法

多类型聚合:平均值、最值、计数

这些操作均基于对应的原始类型流(IntStream / LongStream / DoubleStream),使用模式非常一致:

  • 平均值:list.stream().mapToInt(x -> x).average().orElse(0.0)(返回 OptionalDouble,需处理空值情况)
  • 最大值:list.stream().mapToInt(x -> x).max().orElse(-1)
  • 最小值:list.stream().mapToInt(x -> x).min().orElse(-1)
  • 元素个数:list.stream().count()(此方法无需 map,直接统计总数)

分组后聚合:按字段分类再计算总和或均值

先通过 groupingBy 进行分组,再嵌套聚合操作,最终得到一个 Map:

  • 按姓名分组并求每组分数总和:users.stream().collect(Collectors.groupingBy(User::getName, Collectors.summingInt(User::getScore)))
  • 按年龄分组并求每组平均分:users.stream().collect(Collectors.groupingBy(User::getAge, Collectors.averagingInt(User::getScore)))
  • 结果类型分别为 MapMap,使用起来非常直观

灵活归约:自定义计算逻辑

当内置方法无法满足需求时,reduce 就是通用的解决方案:

  • 简单累加:list.stream().reduce(0, (a, b) -> a + b) 或简写为 list.stream().reduce(0, Integer::sum)
  • 空集合安全处理:reduce 返回 Optional,因此推荐使用带初始值的三参数版本,避免判空繁琐
  • 对象字段归约:users.stream().reduce(0, (sum, u) -> sum + u.getScore(), Integer::sum)

实践证明,这些方法组合应用,足以应对绝大部分集合数值计算场景。写代码时心中有数,使用起来自然得心应手。

来源:https://www.php.cn/faq/2791096.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
IDEA中SpringBoot项目热部署实现指南

IDEA中SpringBoot项目热部署实现指南

Springboot项目在IDEA中实现热部署需依次完成:开启自动编译(静态与动态编译)、启用热部署策略、引入spring-boot-devtools依赖、关闭浏览器缓存,最后启动测试即可生效,省去手动重启时间,大幅提升开发效率。

时间:2026-07-11 06:47
Java实现Excel转JSON的代码详解

Java实现Excel转JSON的代码详解

使用Java结合FreeSpire XLS库可自动将Excel转为JSON,通过读取工作表并映射为键值对,高效支持数据迁移、报表导出与系统对接,大幅提升效率并消除手动录入错误。

时间:2026-07-11 06:47
Golang高效布谷鸟过滤器多字符集字符串过滤

Golang高效布谷鸟过滤器多字符集字符串过滤

布谷鸟过滤器支持删除操作,通过指纹截断与双哈希定位实现多字符集高效过滤。指纹截断需采用fnv64a或xxhash快速哈希并取低8位,桶索引使用独立双哈希避免假阳性。并发安全需以固定数组配合sync atomic实现。

时间:2026-07-11 06:47
Java使用Poi-tl按Word模板生成动态表格

Java使用Poi-tl按Word模板生成动态表格

Poi-tl是Word导出工具,文档周全,支持多级合并表头生成。通过{{text}}、{{?var}}、{{ table}}标签处理模板,传入TableRenderData对象即可动态渲染表格。示例展示用户信息表格生成,并提供工具类消除表格首行缩进,确保格式正确。

时间:2026-07-11 06:47
Go语言微服务集成Swagger生成交互式API文档完整教程

Go语言微服务集成Swagger生成交互式API文档完整教程

在Go微服务中集成Swagger常见四大问题:swaginit初始化失败需确保存在packagemain及注释;SwaggerUI加载失败因路由映射错误或未导入docs;@Param注解必须严格遵循格式;部署后接口文档显示localhost因硬编码host,应删除或通过环境变量动态注入。

时间:2026-07-11 06:47
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜