问题引出

今天需要写一个业务,大概就是我需要从一个List中剔除掉一个想要剔除掉对象,大致代码长这样

workGroupListDTOList.stream().forEach(workGroupListDTO -> {if(workGroupListDTO.getGroupId().equals(groupId)){workGroupListDTOList.remove(workGroupListDTO);}
});

首先第一点:我的GroupId是个Long类型,包装类型,个人觉得最好不要这样比较值相不相等,后面我做了其他方式的判断
第二点:流式遍历集合,但是诶,我remove了,以前还背面试题,什么快速失败,安全失败,今天就遇到了,大致意思我不在这多做解释,就是便利的时候不能通过List的remoce方法删除元素,那怎么安全的剔除呢?

解决方案一

迭代器,使用安全失败的机制,使用迭代器的删除方法,而不是我们LIst本身的删除方法,这个我没有采用,觉得不够简便,感兴趣的可以自己试一下

解决方案二

stream流式计算的方法:
没错,我们的目标只是把groupId相等的那个元素剔除出去,我们可以利用Stream的filter方法去过滤这个方法,下面是我的解决方案

        List<WorkGroupListDTO> groupListDTOS = workGroupListDTOList.stream().filter(data -> data.getGroupId().longValue() != groupId).collect(Collectors.toList());

即轻巧,可读性也好,真不错
今天就到这了,觉得有用的,可以三连啊!!!

实习踩坑之路:快速失败:使用stream流便利集合的时候删除了对象,导致抛错Null相关推荐

  1. mybatis mapper.xml dtd_全栈开发踩坑之路4-用MyBatis实现服务

    1.前言 上一篇文章介绍了如何设计后端的Mysql数据库:Alex Wang:全栈开发踩坑之路3-MySql数据库设计,本文介绍如何用MyBatis实现后端服务. 本后端项目的Github地址(撰写中 ...

  2. [Java灵信LED] -- 踩坑之路

    灵信led -T8 控制板卡 --踩坑之路 下载lv_led.dll 动态库链接 https://pan.baidu.com/s/11ZO-M6kllsq2AyhVW4AKoA 提取码:unsb 提取 ...

  3. jmeter 3版本到5版本踩坑之路

    jmeter 3-5版本升级踩坑路 新版本下载安装 踩坑之路 新版本下载安装 下载新版本软件 ,链接: https://jmeter.apache.org/download_jmeter.cgi: 配 ...

  4. 微信小程序实现大转盘抽奖----踩坑之路

    微信小程序实现大转盘抽奖----踩坑之路 需求:现在有一个小程序抽奖页面如下,此类抽奖方式为大转盘 思路:由服务端获取抽奖次数和奖品,根据服务端的中奖概率来决定是否中奖,最后利用小程序动画将转盘转起来 ...

  5. contentprovider踩坑之路之Failed to find provider info for com.example.app.provider和cursor=null空指针问题

    目录 bug1.Failed to find provider info for com.example.app.provider bug2:cursor=null bug1.Failed to fi ...

  6. 2021-11-01 富文本编辑器Vue-Quill-Editor 踩坑之路

    Vue-Quill-Editor 基于 Quill.适用于 Vue 的富文本编辑器,支持服务端渲染和单页应用. 相对于ssr,spa是通过component进行工作 ssr和spa的区别 1 踩坑之路 ...

  7. webpack踩坑之路 (2)——图片的路径与打包

    webpack踩坑之路 (2)--图片的路径与打包 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle).下面我 ...

  8. 基于dx11的动作游戏踩坑之路--1

    基于dx11的动作游戏踩坑之路--1 首先要声明所有的博客都是学习博客,不是技术博,只是用来记录.整理自己的学习路线,以及日后可以回顾一下.本人也只是一个小菜鸡,可能会有很多错误与纰漏,有大佬愿意指出 ...

  9. 公司自建电商系统对接Ariba PunchOut ----踩坑之路

    Ariba Network是ariba公司开发的供应商采购平台.punchout功能对接数据传输基于cxml. 主要是实现接口登录.购物车信息返回到airba系统,以及等订单功能. 开发手册中有相应的 ...

  10. echart php mysql简书_echart 踩坑之路

    资料 漫漫踩坑路 1. 在低分辨率的电脑上使用时,出现文字和图表模糊的情况. 问题解决前后的展示截图(截图被压缩了,实际效果比较明显) 显示模糊的展示截图 问题解决后的展示 产生问题的原因 canva ...

最新文章

  1. 静态链表的插入和删除
  2. android 安装sqlite3,Android真机安装sqlite3的方法
  3. maven配置tomcat7
  4. 怎么来判断光端机产品的性能优劣?光端机的产品性能有哪些?
  5. 手写实现java中的trim_JS中字符串trim()使用示例
  6. ugui用户定义操作按键
  7. python解释器的提示符是shell嘛_windows python3.2 shell环境(python叫做解释器)
  8. 黑盒测试的测试方法及其案例
  9. centerOS7开启网络服务
  10. php代码写一串新年祝福,新年祝福QQ留言代码_把幸福装的满满的
  11. 使用 p6spy,拦截到持久层执行的sql及参数
  12. Oracle与MySQL的备份还原及密码修改等
  13. 关于wifi密码破解之路-1
  14. MySQL 运维 - 高阶SQL语句
  15. 【策略研究】CAPM模型的选股策略
  16. 一个简单光栅器的实现(五) 光栅化阶段
  17. 企业高管和高收入人群必读的税务筹划策略!
  18. C 小鑫吃苹果 SDUT
  19. 【我是渠道商】段丛斌:把产品当孩子来呵护,把客户当亲人来对待
  20. python中pack函数_关于pack()函数的文章推荐10篇 - pack

热门文章

  1. angularjs sill 创建项目_AngularJS快速上手,从安装到运行
  2. oracle如何储存超长汉子_oracle Clob 存储超长字符
  3. net根据list创建xml_#一起学spring#创建多模块项目
  4. Swiper:基础学习
  5. 使用js事件绑定要调用函数的的三种方式
  6. 考完试 记录一下复习资料 人工智能原理知识点整理
  7. C#解决“Emgu.CV.CvInvoke”的类型初始值设定项引发异常 的其中一个办法
  8. 优先队列及BFS应用
  9. 全局拉普拉斯平滑之(1)Strucutre extraction from texture via relative total variation及稀疏矩阵求解
  10. 2022年新版YOLO解读(PP-YOLOE)