写点什么

如何将集合中的数据 List,对比写入系统中

用户头像
卢卡多多
关注
发布于: 4 小时前
如何将集合中的数据List,对比写入系统中

上文 :实例化 JSON 格式后,如何转化成自己需要的对象、集合形式(https://xie.infoq.cn/article/32727244451082e95b57067d6)


系统对接之后,通过 JSON 转化后的数据,我们需要怎么对比呢?


场景:

比如我现在有一个同步商品的功能,“需要将其他平台的数据,转化成为的我们系统中的数据”,确定为同一个家公司(同一个社会统一信用代码)。

背景:

我需要上个系统中的商品数据,查询到的时候是 JSON 数据,转化成具体的对象数据,

这里我们要对比对象数据,集合中的 List 的数据,对比数据,(我们将集合的数据,通过固定的标识,判断需要添加的数据),其中 A 集合是 ,我们查询到外部系统的数据, B 集合是我查询到的本地的数据 list;


本质步骤分析:


  • 通过对 A 集合和 B 集合中数据,特点条件的对比,

  • 将某一个集合 B-List 的数据, 转化成 map-也就是键值对

  • 代码演示

两个集合LIst如何过滤之后,挑选出来
场景: 同步用户的一个过程,可能用户是通过手机,电脑端注册的,但是我们可提供的凭条不一样,我们需要将A系统的用户,同步到B系统中:
如果我们现在已经有了B系统的List的数据;
/**经过mybatisplus,获取到主要的信息集合*/List<GoodInfo> goodInfoList= AdminService.lambdaQuery().eq(GoodInfo::getName, name).list()
//将获取的数据集合转化成map集合 --listTOMap Map<String,GoodInfo> goodMapList= goodInfoList.Stream().collect(Collectors.tomap(GoodInfo::getName, goodInfo->goodInfo))
我们将数据--> List数据转成map 的key_vlaue形式
复制代码
  • 将键值对 MAP-KEY,放在(这里我们选用的是商品的服务标识-),如果 A 集合中 List 中的服务标识,去查询本地这个 map,

  • 代码演示

A集合中数据-外部系统的,遍历;
for(TestA element:dataA){GoodInfo data= dataMap.get(element.getGoodServiceID())---->如果能这个类是空,证明当前这个服务标识在本系统不存在 if (data == null) { log.info("存在未同步的商品数据"); //存放起来-到某一个特点的集合,然后开始将集合中的数据,依次写入,或者是将数据 addDeviceList.add(element); }}

复制代码


后续可能会遇到一个问题:


  • 注意事项:

如何支持大数据两的同步,或者说有很大的数据需要同步,但是我们本地的数据基本没有,有一万条以上;


我们这边建议是可以做一个批量,或者最直接的是导入数据的功能,比如说是导入数据 Excel 的格式;

用户将另一个系统的数据,导入到我们平台,这样也比较好直观的,


其中导入还有一个特点是,用户不想一个个去新建,想一次性建立多个,这样可以高效率;


下期我们将关于导入的功能实现


发布于: 4 小时前阅读数: 7
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
如何将集合中的数据List,对比写入系统中