java list stream 对象实现分组 求和
AucBidResourcePrice
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("auc_bid_resource_price")
public class AucBidResourcePrice extends BasePo {
@TableId(type = IdType.UUID)
private String bidResourcePriceId;
private String aucOrderId;
@TableField(exist = false)
private StringBuffer priceFlagIds = new StringBuffer();
}
用法
List<AucBidResourcePrice> newList = Lists.newArrayList();
listingList.parallelStream().collect(Collectors.groupingBy(d -> d.getPartyId(), Collectors.toList()))
.forEach((id, groupList) -> {
groupList.stream().reduce(
(a, b) -> new AucBidResourcePrice()
.setBidResourcePriceId(null)
.setAuctionBatchId(a.getAuctionBatchId())
.setPartyId(a.getPartyId())
.setIsDeleteFlag(a.getIsDeleteFlag())
.setPriceFlagIds(a.getPriceFlagIds().append(StringUtils.isEmpty(a.getBidResourcePriceId()) ? "" : a.getBidResourcePriceId()).append("," + b.getBidResourcePriceId()))
).ifPresent(newList::add);
});