gpt4 book ai didi

java - 映射时处理重复的键

转载 作者:行者123 更新时间:2023-11-30 05:31:54 26 4
gpt4 key购买 nike

我的问题是我得到 java.lang.IllegalStateException: Duplicate key每次我尝试映射 StringList 。有没有办法编辑此实现以某种方式处理重复的键?或者我应该用其他方式来做?

Map<String, List<Fee>> feeAccountMap = ContractList
.stream()
.filter(o -> !o.getStatus().equals(ContractStatus.CLOSED))
.collect(Collectors.toMap(o -> o.getFeeAccount(), o -> {
List<Fee> monthlyFees;
try {
monthlyFees = contractFeeService.getContractMonthlyFees(o);
} catch (Exception e) {
throw new RuntimeException(e);
}
return monthlyFees;
}
));

最佳答案

添加合并功能。例如:

Map<String, List<Fee>> feeAccountMap = ContractList
.stream()
.filter(o -> !o.getStatus().equals(ContractStatus.CLOSED))
.collect(Collectors.toMap(o -> o.getFeeAccount(), o -> {
List<Fee> monthlyFees;
try {
monthlyFees = contractFeeService.getContractMonthlyFees(o);
} catch (Exception e) {
throw new RuntimeException(e);
}
return monthlyFees;
}, (value1, value2) -> value1
));

由于 Map 的值似乎是键的函数,因此当两个值具有相同的键时,您可以简单地返回其中一个值。

假设如果 ContractList 的两个元素为 getFeeAccount() 返回相同的 String,则它们彼此相等。

关于java - 映射时处理重复的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57354074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com