这个问题在这里已经有答案了:
在Java8中按多个字段名分组(8个答案)
上个月关门了。
我有一份清单:
public class Dto {
private Integer id;
private String text;
private BigDecimal price;
}
我试过:
Map<String, Map<Integer, List<Dto>>> map =
list.stream()
.collect(
Collectors.groupingBy(
Dto::getText,
Collectors.groupingBy(Dto::getId)));
但这并没有给出bigdecimal字段的和
此外,我希望回报结构如下:
List<SumDto>
public class SumDto {
private Integer id;
private String text;
private BigDecimal sum;
}
我怎样才能做到这一点?非常感谢你
1条答案
按热度按时间qvtsj1bj1#
你什么都没有求和,所以你哪里都看不到和。你必须告诉我
Collectors.groupingBy
如何减少下游的元素。否则,它会创建一个List
默认情况下。你可以这样做:
至于回报结构,我将把它作为练习;)