如何将集合中的数据List,对比写入系统中
上文 :实例化JSON格式后,如何转化成自己需要的对象、集合形式
系统对接之后,通过JSON转化后的数据,我们需要怎么对比呢?
场景:
比如我现在有一个同步商品的功能,“需要将其他平台的数据,转化成为的我们系统中的数据”,确定为同一个家公司(同一个社会统一信用代码)。
背景:
我需要上个系统中的商品数据,查询到的时候是JSON数据,转化成具体的对象数据,
这里我们要对比对象数据,集合中的List的数据,对比数据,(我们将集合的数据,通过固定的标识,判断需要添加的数据),其中A集合是 ,我们查询到外部系统的数据, B集合是我查询到的本地的数据list;
本质步骤分析:
通过对A集合和B集合中数据,特点条件的对比,
将某一个集合B-List的数据, 转化成map-也就是键值对
代码演示
两个集合LIst如何过滤之后,挑选出来
场景: 同步用户的一个过程,可能用户是通过手机,电脑端注册的,但是我们可提供的凭条不一样,我们需要将A系统的用户,同步到B系统中:
如果我们现在已经有了B系统的List的数据;
/*
*经过mybatisplus,获取到主要的信息集合
*/
List goodInfoList= AdminService.lambdaQuery().eq(GoodInfo::getName, name).list()
//将获取的数据集合转化成map集合 --listTOMap
Map 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的格式;
用户将另一个系统的数据,导入到我们平台,这样也比较好直观的,
其中导入还有一个特点是,用户不想一个个去新建,想一次性建立多个,这样可以高效率;
下期我们将关于导入的功能实现