假设我有一个墙列表 listOfWalls 并且每个墙对象都有以下层次结构:
wall -> wallType -> wallEntry(list of wall materials ) -> wallMaterial -> wallMaterialType(enum type),
所以为了在这个列表中获得一些墙的 wallMaterialType,我想
wall.getWallType().getWallEntry().getWallMaterial().getWallMaterialType();
现在 Wall 类也有以下参数:通过从 Wall 类调用我的函数width
,height
它们相乘得到墙的面积。getWallArea()
我想要实现的是从计算的墙壁列表中获取所有 wallMaterialTypes 的面积,因此例如假设我们有 2 面墙:
- 具有以下 wallMaterialTypes 的墙 1:砖、石膏、木材和 35 平方米的 wallArea()。
- 具有以下 wallMaterialTypes 的墙 2:干草、石膏和 105 平方米的 wallArea()。
现在我想要的输出是:
BRICK: 35 square meters.
Plaster: 140 square meters.
Wood: 35 square meters.
Hay: 105 square meters.
到目前为止,我的代码看起来像这样
Map<WallType, Double> getIt = listOfWalls.stream()
.collect(groupingBy(Wall::getWallType, Collectors.summingDouble(Wall::getWallArea)));
从那里我不知道怎么走?帮助表示赞赏。