Java Stream reduce 操作:处理多个字段数据
可以使用 Java Stream 的 reduce 方法来实现对多个字段的操作。具体步骤如下:
- 定义一个包含多个字段的数据模型类,例如:
public class Data {
private int field1;
private String field2;
private double field3;
// 省略getter和setter方法
}
- 创建一个包含多个 Data 对象的 List 集合:
List<Data> dataList = new ArrayList<>();
dataList.add(new Data(1, 'A', 1.1));
dataList.add(new Data(2, 'B', 2.2));
dataList.add(new Data(3, 'C', 3.3));
- 使用 reduce 方法实现多个字段的操作,例如计算所有 field1 的和、所有 field2 的拼接、所有 field3 的平均值:
int sumField1 = dataList.stream()
.mapToInt(Data::getField1)
.reduce(0, Integer::sum);
String concatField2 = dataList.stream()
.map(Data::getField2)
.reduce("", String::concat);
double avgField3 = dataList.stream()
.mapToDouble(Data::getField3)
.average()
.orElse(0);
其中,mapToInt 方法将 Data 对象映射为 int 类型的 field1 字段,map 方法将 Data 对象映射为 String 类型的 field2 字段,mapToDouble 方法将 Data 对象映射为 double 类型的 field3 字段。reduce 方法的第一个参数是初始值,第二个参数是操作函数。在计算 field2 的拼接时,使用了 String 的 concat 方法来实现字符串的拼接。在计算 field3 的平均值时,使用了 Optional 类的 orElse 方法,如果 Stream 为空,则返回 0。
以上就是使用 Java Stream 的 reduce 方法实现多个字段操作的方法。
原文地址: https://www.cveoy.top/t/topic/lrv6 著作权归作者所有。请勿转载和采集!