1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java duplicate key_Stream 操作 Duplicate key问题

java duplicate key_Stream 操作 Duplicate key问题

时间:2024-07-05 15:33:08

相关推荐

java duplicate key_Stream 操作  Duplicate key问题

背景:有一个用户订单查询首页(默认查询最近20条订单同时支持多条件查询),订单有多种,比如分销单,买家单,活动单等等,现在有一个需求,对于分销买家单需要添加供销商的一个信息。通过SupplierShopId作为参数 调用远端接口可以获取SupplierShopName。

开发思考:由原先的单次掉用修改为批量调用,店铺方面给的批量查询接口最大支持查询量为20条,对于多条件查询如果修改pageSize 需要多次调用,这边需要获取分销买家单进行数量计算,所以首先需要获取分销买家单数量。这边使用流操作先进行一次业务标判断过滤出符合条件的单子。获取到单子进行批量接口调用计算,将调用返回结果添加进入list集合里面。list的对象类型为定义的一个bo(拥有店铺id和店铺别名两个属性)最简单的方法是使用两个for循环,将bo中的店铺id和list中每个对象的店铺id 进行匹配,放入特定ordertail中。考虑时间效率使用map进行优化key 为店铺id ,value为店铺名字

遇到坑点:Stream 流操作后报错 Duplicate key

stream()

.collect(

Collectors.toMap(ShopMetaInfo::getKdtId, ShopMetaInfo::getShopName));

复制代码

原因:

多个分销单可能存在同一个供货商情况。

解决方案:

在java8中Collectors类中的tomap方法提供了我们将数据转换成Map的封装,往往在我们应用2个参数的(我们声明Key和Value很直接如下图)前提是key不能重复

其实java8已经给我们提供了解决的方式: 方法的第三个参数体现的

其实java8已经给我们提供了解决的方式: 方法的第三个参数体现的

java8处理思路:即 两个key相同时 只能有一个key存在,那对应的value如何处理? value就是这样处理(我们自己来写方法体,我只是简单的拿逗号拼接下)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。