我有一个对象列表,例如:
Part("12345" , "Part1", 5));
Part("67890" , "Part5", 2));
Part("12345" , "Part1", 2));
我希望能够转换为下面的列表,如果零件编号出现一次且数量相加。
结果
Part("12345" , "Part1", 7));
Part("67890" , "Part5", 2));
return emptyIfNull(partList.getParts())
.stream()
.map(part -> Part
.builder()
.partNumber(part.getNumber())
.partDescription(part.getDescription())
.partQuantity(part.getQuantity()) // WHAT CHANGE DO I NEED TO MAKE TO FILTER AND SUM
.build())
.collect(toList());
考虑值
Part
表示如下:
record Part(String number, String description, int quantity) {
private Part merge(Part another) {
return new Part(this.number, this.description,
this.quantity + another.quantity);
}
}
您可以使用 toMap
收集器收集
merged值的列表,例如:
Collection<Part> mergedValues = emptyIfNull(partList.getParts())
.stream()
.collect(Collectors.toMap(p -> p.number,
Function.identity(), Part::merge))
.values();