主要是通过CollectionUtils.removeAll来实现两个集合的比较,判断增量数据是什么,缩量数据是什么。CollectionUtils.removeAll在比较两个集合的时候不会对集合产生影响,而集合的removeAll操作却会产生影响。

MyAlarmLinkmanGroupPO myAlarmLinkmanGroupPO =myAlarmLinkmanGroupConverter.saveDtoToPo(myAlarmLinkmanGroupSaveDTO);// 更新联系人组mapper.updateMyAlarmLinkmanGroupById(myAlarmLinkmanGroupPO);// 如果联系人为空则返回List<Integer> paramsLinkmanIds = myAlarmLinkmanGroupSaveDTO.getLinkmanIds();if (CollectionUtils.isEmpty(paramsLinkmanIds)) {return true;}// 获取原组下联系人id集合MyAlarmLinkmanGroupInfoDTO myAlarmLinkmanGroupInfoDTO =mapper.queryMyAlarmLinkmanGroupById(myAlarmLinkmanGroupSaveDTO.getId());ArrayList<Integer> originalLinkmanIds = new ArrayList<>();if (CollectionUtils.isNotEmpty(myAlarmLinkmanGroupInfoDTO.getLinkmanList())) {for (MyAlarmLinkmanListDTO listDTO : myAlarmLinkmanGroupInfoDTO.getLinkmanList()) {originalLinkmanIds.add(listDTO.getId());}}// 获取增量idsCollection<Integer> waitAddLinkmanIds = CollectionUtils.removeAll(paramsLinkmanIds, originalLinkmanIds);// 维护表关联关系for (Integer paramsLinkmanId : waitAddLinkmanIds) {MyAlarmLinkmanGroupRelPO relPO = new MyAlarmLinkmanGroupRelPO();relPO.setLinkmanId(paramsLinkmanId).setLinkmanGroupId(myAlarmLinkmanGroupSaveDTO.getId()).setCrtTime(new Date()).setStatus(RecordStatus.NORMAL.getId()).setUpdTime(new Date());myAlarmLinkmanGroupRelMapper.insertMyAlarmLinkmanGroupRel(relPO);}// 获取删除idsif (CollectionUtils.isEmpty(originalLinkmanIds)) {return true;}Collection<Integer> waitDeleteLinkmanIds = CollectionUtils.removeAll(originalLinkmanIds, paramsLinkmanIds);for (Integer originalLinkmanId : waitDeleteLinkmanIds) {// 获取关联表主键idInteger id =myAlarmLinkmanGroupRelMapper.queryMyAlarmLinkmanGroupRelIdByLinkmanIdAndGroupId(originalLinkmanId, myAlarmLinkmanGroupSaveDTO.getId());MyAlarmLinkmanGroupRelPO relPO = new MyAlarmLinkmanGroupRelPO();relPO.setId(id).setStatus(RecordStatus.DELETED.getId());myAlarmLinkmanGroupRelMapper.updateMyAlarmLinkmanGroupRelById(relPO);}

CollectionUtils.removeAll和集合的removeAll区别及代码实现相关推荐

  1. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别...

    ArrayList和Vector的区别 ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的. ...

  2. .Net各种集合类型的区别

     .Net各种集合类型的区别 Net集合类型:        ((I)).集合类型              1.一般集合                  I.Array             ...

  3. Java集合知识点详细概括加代码解释

    集合Collection (List And Set) 1.在实际开发中,需要将使用的对象存储于特定的数据结构容器中.JDK提供了这样的容器-集合(Collection). 2.Collection ...

  4. 【Groovy】map 集合 ( map 集合操作符重载 | *. 展开操作符 | 代码示例 )

    文章目录 一.map 集合 " *. " 展开操作符 二.代码示例 一.map 集合 " *. " 展开操作符 对 map 集合使用 " *. &qu ...

  5. 【Groovy】map 集合 ( map 集合操作符重载 | + 操作符重载 | 代码示例 )

    文章目录 一.map 集合 " + " 操作符重载 二.代码示例 一.map 集合 " + " 操作符重载 对 map 集合使用 " + " ...

  6. CPL DPL RPL的区别 一致性代码段和非一致性代码段

    概述:在谈论保护模式编程的时候,一直会有这样的困惑:为什么除了CPL和DPL还有RPL?什么时候高特权级不能访问低特权级?什么时候低特权级不能访问高特权级?一致性代码和非一致性代码有什么区别?等等这些 ...

  7. html代码id,浅谈html中id和name的区别实例代码

    浅谈html中id和name的区别实例代码 更新时间:2008年07月28日 23:00:55   作者: 这个是form里面的name与id的区别 我们可以通过一段代码来分析一下其中的微妙差别: 在 ...

  8. Educoder–Java高级特性(第二章)- 集合框架【笔记+参考代码】

    Educoder–Java高级特性(第二章)- 集合框架[笔记+参考代码] 第一关 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,创建ArrayList集 ...

  9. 机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现。

    机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现. 梯度下降法(GD) 随即梯度下降(SGD) 代码实现 如果想细致的了解:-> 梯度下降法 梯度下降法(GD) 假设函数fx, ...

最新文章

  1. 《强化学习周刊》第34期:牛津、谷歌、Facebook等 | 自动强化学习 (AutoRL):研究综述和开放性问题...
  2. Eclipse报错:!!MESSAGE Job found still running.......
  3. 【学亮IT手记】oracle远程连接工具PL/SQL Developer的安装使用教程
  4. Windows下用VS2013加载caffemodel做图像分类
  5. 2018年中国C++大会详细日程+报名
  6. 探讨float类型的数值,为什么两个float不能直接相等
  7. react学习(48)--编辑回显用moment处理
  8. 四大跨平台的APP分析
  9. 防qq页面多边形html5,高仿QQ Xplan的H5页面
  10. [Spring实战系列](18)注解切面
  11. android访问asset目录下的资源
  12. matlab size11,matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute
  13. Win10系统如何快速更改桌面文件夹图标
  14. FileBrowser文件浏览器部署
  15. java中list空指针异常,List空指针异常
  16. handlebars学习总结
  17. SAP标准功能重复制造计划编制表实现生产排产初步分析
  18. mac pro M1(ARM)安装:python开发环境
  19. FXDD-点值获利计算
  20. UnityShader入门精要-透明效果

热门文章

  1. c4d python sdk_C4D脚本自动接口完成脚本 Python Cinema 4D API auto completion (fake package)
  2. JavaScript正则的声明与使用
  3. js控制全屏显示/退出全屏的方法
  4. [Android Studio]Android 数据存储--SQLite数据库存储
  5. 零碳馆2.0展现未来科技
  6. 2023第三届中国数字化人才国际峰会
  7. 无限火力测试服连不上服务器,无限火力回归!LOL美服测试服新版本已登陆
  8. linux系统怎么进root用户,linux系统如何切换到root用户
  9. cs1.6,青春的感觉!
  10. 阿里钉钉机器人在钉钉群无法单独艾特单人脚本修改