异常提示信息:

  1. java.util.ConcurrentModificationException
  2. at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
  3. at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:742)
  4. at com.yonyou.cloud.repair.service.dcs.part.partmaindataimport.PartMainDataImportServiceImpl.lambda$getMainDataList2$5(PartMainDataImportServiceImpl.java:282)
  5. at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:372)
  6. at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
  7. at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
  8. at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
  9. at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
  10. at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
  11. at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
  12. at com.yonyou.cloud.repair.service.dcs.part.partmaindataimport.PartMainDataImportServiceImpl.getMainDataList2(PartMainDataImportServiceImpl.java:293)
  13. at com.yonyou.cloud.repair.service.dcs.part.partmaindataimport.PartMainDataImportServiceImpl.importUpload(PartMainDataImportServiceImpl.java:541)
  14. at com.yonyou.cloud.repair.service.dcs.part.partmaindataimport.PartMainDataImportServiceImpl$$FastClassBySpringCGLIB$$a14684e1.invoke(<generated>)
  15. at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  16. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
  17. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
  18. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  19. at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367)
  20. at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
  21. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
  22. at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
  23. at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
  24. at com.yonyou.cloud.repair.service.dcs.part.partmaindataimport.PartMainDataImportServiceImpl$$EnhancerBySpringCGLIB$$2047ea2c.importUpload(<generated>)
  25. at com.yonyou.cloud.repair.controller.dcs.part.partmaindataimport.PartMainDataImportController.importUpload(PartMainDataImportController.java:96)
  26. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  27. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  28. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  29. at java.lang.reflect.Method.invoke(Method.java:498)
  30. at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
  31. at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
  32. at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
  33. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
  34. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
  35. at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
  36. at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
  37. at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
  38. at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
  39. at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

问题代码:

  1. for (String s : row.keySet()) {
  2.   if (DICT_1004_FIELDS.contains(s)) row.computeIfPresent(s, (key, value) -> YES_NO_FIELDS.get(0).equals(value) ? YES : NO);
  3.   // 删除空值 Key
  4.   if (StringUtils.isNullOrEmpty(row.get(s))) row.remove(s);
  5. }

这里做了一个删除操作,使用For遍历或者 调用forEach函数都会出现

这种遍历方式不允许元素的个数调整

需要更改使用迭代器实现:

  1. // 删除空Val的Key
  2. row.entrySet().removeIf(next -> StringUtils.isNullOrEmpty(next.getValue()));

或者改用stream流操作来实现:

  1. return ownPriceList.stream().map(m -> {
  2. // 翻译删除
  3. m.computeIfPresent(IS_DELETED, (key, value) -> YES_NO_FIELDS.get(2).equals(value) ? 1 : 0);
  4. // 删除缺省设置
  5. if (StringUtils.isNullOrEmpty(m.get(IS_DELETED))) m.put(IS_DELETED, 0);
  6. // 结束时间更新校验
  7. Object endAt = m.get(END_AT);
  8. if (m.get(IS_DELETED).equals(1) && StringUtils.isNullOrEmpty(endAt) && 0 < now.compareTo(DateUtil.parse(endAt.toString()))) {
  9. m.remove(END_AT);
  10. }
  11. return m;
  12. }).collect(Collectors.toList());

【Java】java.util.ConcurrentModificationException的更多相关文章

  1. 【转】java.util.vector中的vector的详细用法

    [转]java.util.vector中的vector的详细用法 ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.uti ...

  2. 【转】Java HashMap 源码解析(好文章)

    ­ .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wra ...

  3. 【转】Java 读写Properties配置文件

    [转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形 ...

  4. 【转】java格式化输出 printf 例子

    [转]java格式化输出 printf 例子 转自http://www.cnblogs.com/TankMa/archive/2011/08/20/2146913.html#undefined imp ...

  5. 【转】 java RSA加密解密实现

    [转] java RSA加密解密实现 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detai ...

  6. 【漫画】JAVA并发编程之并发模拟工具

    原创声明:本文来源于公众号[胖滚猪学编程],转载请注明出处. 上一节[漫画]JAVA并发编程三大Bug源头(可见性.原子性.有序性)我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就 ...

  7. 【MQ】java 从零开始实现消息队列 mq-02-如何实现生产者调用消费者?

    前景回顾 上一节我们学习了如何实现基于 netty 客服端和服务端的启动. [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]java 从零开始实现消息队列 mq-02-如何实现生产者调用 ...

  8. 【设计模式】Java设计模式 - 观察者模式

    [设计模式]Java设计模式 - 观察者模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 @一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...

  9. 【转】Java代码规范

    [转]Java代码规范 http://blog.csdn.net/huaishu/article/details/26725539

  10. 【深入】java 单例模式(转)

    [深入]java 单例模式 关于单例模式的文章,其实网上早就已经泛滥了.但一个小小的单例,里面却是有着许多的变化.网上的文章大多也是提到了其中的一个或几个点,很少有比较全面且脉络清晰的文章,于是,我便 ...

随机推荐

  1. Linux设备驱动--异步通知

    注:本文是<Linux设备驱动开发详解:基于最新的Linux 4.0内核 by 宋宝华 >一书学习的笔记,大部分内容为书籍中的内容. 书籍可直接在微信读书中查看:Linux设备驱动开发详解 ...

  2. Spring源码——ConfigurationClassPostProcessor类

    引言 Spring容器中提供很多方便的注解供我们在工作中使用,比如@Configuration注解,里面可以在方法上定义@Bean注解,将调用方法返回的对象交由Bean容器进行管理,那么Spring框 ...

  3. 牛客网在线编程-语法篇-基础语法——C 语言解题集

    前言 牛客网在线编程-语法篇-基础语法--C 语言解题集. 点击下方超链接跳转至对应编程题目,文章包含解析及源码. 01-基础语法 简单输出 BC1-Hello Nowcoder BC2-小飞机 基本 ...

  4. 增补博客 第二篇 python 谢宾斯基三角型字符分形图形输出

    SIZE = int(input())# 输入分割次数 SIZE = SIZE<<3 # 将分割次数转为次数 y = SIZE - 1 # 用来控制列数 while y>=0: fo ...

  5. 【干货分享】.NET人脸识别解决方案

    前言 前段时间有同学在DotNetGuide技术社区交流群提问:.NET做人脸识别功能有什么好的解决方案推荐的吗?今天大姚给大家推荐2款.NET开源.免费.跨平台.使用简单的人脸识别库,希望可以帮助到 ...

  6. 引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionException解决

    引入feign注入报错 org.springframework.beans.factory.NoSuchBeanDefinitionException解决 [172.16.22.215] out: C ...

  7. P2467 [SDOI2010] 地精部落 学习笔记

    DP 显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了 发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然 ...

  8. 张高兴的 MicroPython 入门指南:(一)环境配置、Blink、部署

    目录 什么是 MicroPython 环境配置 硬件部分 软件部分 Hello World! Blink Pico 的引脚 常见电子元件 面包板 跳线 开关 发光二极管 电阻 使你的 Pico 闪烁 ...

  9. P3355 骑士共存问题题解

    题目链接:P3355 骑士共存问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题解: 棋盘问题考虑黑白染色成为二分图后做. 观察马的性质,可知一个点只能到一个异色点,所以,构造 ...

  10. 配置hive环境步骤(zookeeper高可用集群已搭建)

    安装mysql:1. 检查当前环境是否安装mysql服务(命令:rpm -qa | grep -i mysql)2. 卸载自带的mysql3. 卸载软件:rpm -e --nodeps mysql-l ...