Java Lambda表达式如何计算集合元素
Lambda表达式需配合StreamAPI实现集合元素的高效计算。通过stream()将集合转为流,利用mapToInt() sum()求和,average()求平均,max() min()求最值,count()计数,groupingBy结合summingInt averagingInt实现分组聚合,reduce进行自定义归约,覆盖多数数值计算场景,且操作简
说到 Java 中 Lambda 表达式如何用于集合元素计算,核心思路其实很简单:Lambda 本身并不直接执行计算,必须配合 Stream API 才能发挥威力。先将集合转为流(stream()),再通过一条函数式操作链,即可轻松完成求和、平均值、最大值最小值、分组汇总等常见操作。

下面几个高频场景,几乎覆盖了日常开发中绝大多数的数值计算需求。
基础求和:整数列表或对象属性求和
无论是针对 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))) - 结果类型分别为
Map或Map,使用起来非常直观
灵活归约:自定义计算逻辑
当内置方法无法满足需求时,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)
实践证明,这些方法组合应用,足以应对绝大部分集合数值计算场景。写代码时心中有数,使用起来自然得心应手。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
IDEA中SpringBoot项目热部署实现指南
Springboot项目在IDEA中实现热部署需依次完成:开启自动编译(静态与动态编译)、启用热部署策略、引入spring-boot-devtools依赖、关闭浏览器缓存,最后启动测试即可生效,省去手动重启时间,大幅提升开发效率。
Java实现Excel转JSON的代码详解
使用Java结合FreeSpire XLS库可自动将Excel转为JSON,通过读取工作表并映射为键值对,高效支持数据迁移、报表导出与系统对接,大幅提升效率并消除手动录入错误。
Golang高效布谷鸟过滤器多字符集字符串过滤
布谷鸟过滤器支持删除操作,通过指纹截断与双哈希定位实现多字符集高效过滤。指纹截断需采用fnv64a或xxhash快速哈希并取低8位,桶索引使用独立双哈希避免假阳性。并发安全需以固定数组配合sync atomic实现。
Java使用Poi-tl按Word模板生成动态表格
Poi-tl是Word导出工具,文档周全,支持多级合并表头生成。通过{{text}}、{{?var}}、{{ table}}标签处理模板,传入TableRenderData对象即可动态渲染表格。示例展示用户信息表格生成,并提供工具类消除表格首行缩进,确保格式正确。
Go语言微服务集成Swagger生成交互式API文档完整教程
在Go微服务中集成Swagger常见四大问题:swaginit初始化失败需确保存在packagemain及注释;SwaggerUI加载失败因路由映射错误或未导入docs;@Param注解必须严格遵循格式;部署后接口文档显示localhost因硬编码host,应删除或通过环境变量动态注入。
- 热门数据榜
相关攻略
2026-07-11 06:47
2026-07-11 06:47
2026-07-11 06:47
2026-07-11 06:47
2026-07-11 06:47
2026-07-11 06:46
2026-07-11 06:46
2026-07-11 06:46
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

