小编mar*_*a82的帖子

将流映射到另一个对象的实例

我有一个类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)

java java-8 java-stream collectors

7
推荐指数
1
解决办法
100
查看次数

标签 统计

collectors ×1

java ×1

java-8 ×1

java-stream ×1