java.util.ConcurrentModificationException: null 报错解决

这篇具有很好参考价值的文章主要介绍了java.util.ConcurrentModificationException: null 报错解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇文章将学习到:

1. java.util.ConcurrentModificationException: null出现原因及解决办法(附带案例)

2. List的三种遍历方式

3. List的解析(新手向)

4.如何选择集合实现类


ConcurrentModificationException

出现问题

在使用List集合的时候出现了如下报错:

java.util.ConcurrentModificationException: null 报错解决

 定位代码:

java.util.ConcurrentModificationException: null 报错解决

 

出现原因

报错解释:“ConcurrentModificationException是基于java集合中的快速失败(fail-fast)机制产生的,在使用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了增删改,就会抛出该异常。”

当我们迭代一个ArrayList或者HashMap时,如果尝试对集合做一些修改操作(例如删除元素),可能会抛出java.util.ConcurrentModificationException的异常。

解决办法

  • 方法一:不要在增强for循环中增删数据
  • 方法二:使用索引(普通for循环)遍历。
  • 方法三:使用增强for循环遍历,增删操作使用迭代器实现。

List遍历的三种方法

  1. 使用普通for
  2. 使用增强for
  3. 使用iterator

代码实现:

public static void main(String[] args) {
        List  list = new ArrayList();

        // 添加元素 1-10
        for (int i = 1; i < 11;i++){
            list.add(i);
        }

        System.out.println(list);
        System.out.println("------------------------------------");


        // List遍历的三种方式
        //1. for循环
        System.out.println("====for循环遍历");
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }
        //2. 增强for循环
        System.out.println( );
        System.out.println("====增强for循环遍历");
        for (Object o : list) {
            System.out.print(o+" ");
        }
        //3. 迭代器
        System.out.println( );
        System.out.println("====迭代器遍历");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.print(next+" ");
        }



    }

打印结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
------------------------------------
====for循环遍历
1 2 3 4 5 6 7 8 9 10 
====增强for循环遍历
1 2 3 4 5 6 7 8 9 10 
====迭代器遍历
1 2 3 4 5 6 7 8 9 10 

List的解析 

集合主要是两组:单列集合 和 双列集合

collection接口有两个重要接口 List 和 Set,它们的实现子类是单列集合

java.util.ConcurrentModificationException: null 报错解决

 

java.util.ConcurrentModificationException: null 报错解决

 

List接口是Collection接口的子接口

  1. List接口类中元素有序(添加顺序和取出顺序一致),且可重复

  2. List集合中的每个元素都有其对应的顺序索引

  3. List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素

  4. JDK API 中List接口的实现类 AbstractList , AbstractSequentialList , ArrayList , AttributeList , CopyOnWriteArrayList , LinkedList , RoleList , RoleUnresolvedList , Stack , Vector

    主要类:ArrayList、LinkedList、Vector

如何选择集合的实现类

1. 先判断存储的类型(一组对象或一组键值对)
2. 一组对象Collection接口
       允许重复:List
             增删多:LinkedList(底层维护了一个双向链表)
             改查多:ArrayList(底层维护Object类型的可变数组)
           不允许重复:Set
             无序:HashSet(底层是HashMap,维护了一个哈希表,即数组+链表+红黑树)
             排序:TreeSet
             插入和取顺序一致:LinkedHashSet(维护数组+双向链表)


3.一组键值对Map
            键无序:HashMap(底层是:哈希表 jdk7:数组+链表  jdk8:数组+链表+红黑树)
            键排序:TreeMap
            键插入和取出顺序一样:LinkedHashMap
            读取文件:Properties文章来源地址https://www.toymoban.com/news/detail-402849.html

到了这里,关于java.util.ConcurrentModificationException: null 报错解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cannot invoke “Object.toString()“ because the return value of “java.util.Map.get(Object)“ is null

    在写瑞吉外卖的时候遇到 Object.toString()为空的问题,最后发现是 前端没有往后端传递数据,第一个图片是只传的phone最后改为from第二个是没有写函数sendMsgApi,改正后,发现登录进去又回退到主页面,发现是因为在过滤器中要保存session,保存后才能发送,再次添加形参Http

    2024年02月02日
    浏览(53)
  • 解决Post请求JSON列表参数格式报错:JSON parse error: Cannot deserialize value of type `java.util.ArrayList<x>

    今天在调试接口的时候,遇到一个问题。有一个post请求的json body参数, 然后vo里面只有两个属性,id和一个集合。 然后使用apifox调试接口的时候,发现json解析异常: 通过提示信息,可以发现是因为json结构不对导致解析不了。 我原来是这样传的,会报错: 应该给list加一层数

    2024年02月11日
    浏览(53)
  • websocket报错:java.io.EOFException: null

    提示:我这里是websocket在断开连接时就会提示这个错误,但websocket连接的时候没问题,不太清楚怎么回事,如有大佬清楚,希望可以指教一下,谢谢 既然提示没有为它配置错误处理,那我们就为它配置一下错误处理 注意上面两个参数是一点要的,不要的话启动会报错,不要

    2024年02月11日
    浏览(38)
  • Tomcat报错:cannot be cast to class java.util.Map (java.io.ObjectStreamClass$Caches$1 and java.util.Map

    启动tomcat时会报如下错误,原因是tomcat与jdk的版本不匹配。当然要因情况而异,给大家一个解决方法的思路 这是从tomcat官方文档中找到对应的jdk版本 后记 并不是tomcat与jdk版本匹配就一定不会问题,产生这个问题是我启动activiti-app时发生的,当时我的tomcat是9,JDK是11后来又换

    2024年01月21日
    浏览(39)
  • Java报错:java.lang.IllegalArgumentException: Source must not be null

    运行项目的时候,突然暴了这么一个错,通过debug进行调试以后发现是:  前端传递过来的id不对,后两位自动归0了,通过已经归0的id,显然不可以查询到后端的数据。 经过检查,发现是在使用mybatis-plus的时候,id是使用雪花算法自动生成19位数字,传给前端会通过json序列化

    2024年01月20日
    浏览(63)
  • 解决java.util.NoSuchElementException

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月05日
    浏览(62)
  • 解决 Cannot read properties of null (reading ‘disabled‘)报错

    在Vue + elementUI 后台项目里遇到了一个问题,所有模块的的下拉Select 和时间选择器DataPicker (可能还有其他组件) ,在选择后点击页面其他地方都不会自己收起。打开控制台会发现报错了,每点击一次,错误+1. 代码里全局搜索 el-dropdown ,el-dropdown下缺少 el-dropdown-menu 元素,如果

    2024年02月13日
    浏览(41)
  • java报错:Type handler was null on parameter mapping for property ‘*‘,jdbcType (null) combination.

    实体类字段为JSON类型时,必须使用标签进行判定以排除其为null的可能性,否则会报下面的找不到为null时的指定。 解决方法:在java对应的实体类添加对应的字段,重点是加上(typeHandler = JacksonTypeHandler.class)这个注解

    2024年02月12日
    浏览(52)
  • 避免低级错误:深入解析Java的ConcurrentModificationException异常

    在软件开发中,我们常常会遇到各种错误和异常。其中有一类比较低级但又常见的错误就是 ConcurrentModificationException 异常。最近了我就写了个这种异常,这个异常通常发生在使用迭代器遍历集合时,同时对集合进行修改,从而导致迭代器检测到集合结构发生变化而抛出异常。

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包