[英]Java API Streams collecting stream in Map where value is a TreeSet
[英]Collecting to map using Java Stream API
這是我需要收集的類對象:
public class InvestBalance {
@JsonValue
private List<Balance> balances;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class Balance {
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
private BigDecimal value;
}
}
我從數據庫中得到了一個List<InvestBalance.Balance>
,我需要按date
字段對它們進行分組,所以我需要得到一個Map<LocalDate, BigDecimal>
。 值必須是 bigDecimals 的總和。 我如何使用 Java Stream API 做到這一點?
list.stream()
.collect(Collectors.groupingBy(Balance::getDate,
Collectors.mapping(Balance::getValue,
Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)));
或者靜態導入 Collectors.* 以使其更具可讀性:
list.stream()
.collect(groupingBy(Balance::getDate,
mapping(Balance::getValue, reducing(BigDecimal.ZERO, BigDecimal::add)));
您可以使用Collectors.toMap
收集為Map
Map<LocalDate, BigDecimal> res =
list.stream()
.collect(Collectors.toMap(Balance::getDate, Balance::getValue, BigDecimal::add));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.