我有一个类CarPart定义为:
class CarPart {
String name;
BigDecimal price;
Supplier supplier;
}
Run Code Online (Sandbox Code Playgroud)
一个类Report:
class Report {
List<Part> parts;
BigDecimal total;
}
Run Code Online (Sandbox Code Playgroud)
和一个班级Part:
class Part {
String name;
String supplierName;
}
Run Code Online (Sandbox Code Playgroud)
给定 a Stream<CarPart> carParts,我需要创建一个Report对象。
我处理这个问题的想法是创建一个Map<List<Part>, BigDecimal>,其中List<Part>是转换CarPart对象的列表,BigDecimal是给定流中所有汽车零件的价格总和。之后,我可以访问Map<>包含单个条目的 ,并且可以创建一个新的Report.
我开始这样做,但我不知道如何收集它。在.map我在下面做之后,我实际上有一个,Map<Part, BigDecimal>但我需要总结Part一个列表中的所有对象,并将所有对象相BigDecimal加以创建Report.
carParts.stream()
.map(x -> {
return new AbstractMap.SimpleEntry<>(new Part(x.getName(), x.supplier.getName()), x.getPrice());
}) …Run Code Online (Sandbox Code Playgroud)