为了账号安全,请及时绑定邮箱和手机立即绑定

映射时处理复制键

映射时处理复制键

缥缈止盈 2023-05-17 16:03:12
我的问题是java.lang.IllegalStateException: Duplicate key每次尝试映射String时都会遇到List. 有没有办法编辑此实现以某种方式处理重复键?或者我应该用另一种方式来做吗?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;            }            ));
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

添加合并功能。例如:


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返回相同的Stringfor getFeeAccount(),则它们彼此相等。


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信