Java List集合Stream流多字段分组获取字段值和

是这样的,想请说下,Java List集合Stream流多字段分组获取字段值和
最新回答
惜三年青春

2024-11-30 12:02:15

在日常的业务开发中,常常需要从数据库中提取出所有站点的降水数据,然后对这些数据进行累加处理,按照站点进行分类汇总。这时,可以利用Java的Stream流API来实现高效、简洁的处理。下面是一段示例代码,展示了如何使用Stream流对站点降水进行分组并累加。

首先,假设我们有一个站点降水的列表(List),其中每个SiteRainfall对象包含站点名(site)和降水量(precipitation)两个字段:

java
List siteRainfalls = ...; // 假设已从数据库获取到站点降水数据

接下来,我们可以使用Stream流进行分组操作,然后累加每个站点的降水:

java
Map accumulatedRainfall = siteRainfalls.stream()
.collect(Collectors.groupingBy(SiteRainfall::getSite, Collectors.reducing(0L, SiteRainfall::getPrecipitation, Long::sum)));

这段代码中,`groupingBy`方法根据站点名(`SiteRainfall::getSite`)对数据进行分组,`reducing`方法则是对每个站点的降水量进行累加,初始值设为0(`0L`),累加操作使用`Long::sum`。最终,`accumulatedRainfall` Map中存储了每个站点及其对应的累加降水量。

通过这种方式,我们不仅实现了站点的分组,还方便地获取了每个站点降水的累加值,使得代码更加清晰和易于维护。