当前位置: 首页 > 知识库问答 >
问题:

映射时处理复制键[duplicate]

琴英华
2023-03-14

我的问题是,我得到java.lang.IllegalStateExc0019:重复键每次我试图映射一个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;
            }
            ));

共有1个答案

东门茂实
2023-03-14

添加合并函数。例如:

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的值似乎是键的函数,因此当两个值具有相同的键时,可以简单地返回其中一个值。

这是假设如果ConttList的两个元素返回相同的String用于getFee帐户(),则它们彼此相等。

 类似资料:
  • 在Spring的上个版本中,用户需要在web应用的上下文中定义一个或多个的HandlerMappingbean,用以将进入容器的web请求映射到合适的处理器方法上。允许在控制器上添加注解后,通常你就不必这么做了,因为RequestMappingHandlerMapping类会自动查找所有注解了@RequestMapping的@Controller控制器bean。同时也请知道,所有继承自Abstra

  • 17.5. 处理器映射 通过处理器映射,可以把进来的portlet请求对应到合适的处理器上。已经有一些 现成的处理器映射可以使用,比如PortletModeHandlerMapping。 但还是让我们先看一下HandlerMapping的一般概念。 注意,我们这里有意使用“处理器”来代替“控制器”。 DispatcherPortlet是设计用来和多种方式一起处理请求的, 而不仅仅是和Spring

  • 在child_tableparent_id列作为外键和复合主键的一部分。 Embedded类内部无法使用标识生成器。所以我在这里使用ID类。为child_id列生成自动增量值。 我无法将parent_table生成parent_id值作为外键值存储在child_table中,它存储为0。 有人能检查一下地图吗?帮帮我…… 提前致谢...

  • ControllerClassNameHandlerMapping类是HandlerMapping接口的一个实现,它是通过一个约定来解析请求URL及处理该请求的@Controller控制器实例之间的映射关系。 请看下面一个简单的控制器实现。请注意留意该类的 名称: public class **ViewShoppingCartController** implements Controller {

  • 我在使用模型映射器使用执行父子实体更新时遇到了一个问题。 描述如下 父类: 儿童班: 通过这种安排,我能够成功地创建和查询站点地址组合。但是,我在进行更新时遇到了一个问题。我正在尝试使用modelmapper语句更新站点或地址,如下所示: 期望在传入站点中更改的所有字段(即来自请求的站点)应替换站点中的现有字段。但是,我从modelmapper中得到一个Stackoverflow错误。 我们是否有

  • 我在jpa/Hibernate中映射复合键时遇到了问题。父实体和子实体都具有复合主键。 在运行时保存它时会出现以下异常: 我认为这是虚假的,因为有getter和setter。如果在priceRequestLegModel上使用mappedby=“leg”,在allocationModel上使用@mapsid,也会出现同样的错误。有人能指出我在这里做错了什么吗?