Bootstrap

如何将集合中的数据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的格式;

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

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

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