遍历列表时出现 ConcurrentException

2023-12-21

我现在的状态很奇特。我有一个如下所示的列表:-

List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");

现在,当我进行多种类型的遍历时,例如使用高级 for、迭代器和普通 for 循环,下面是示例代码片段:-

1> 高级循环 :-

try {
    for(String a : list) {
        System.out.println(a);
        list.add("f");
    }
} catch (Exception e) {
    e.printStackTrace();
}

2> 迭代器:-

try {
    Iterator<String> itr =  list.iterator();
    while(itr.hasNext()) {
        System.out.println(itr.next());
        list.add("f");
    }
} catch (Exception e) {
    e.printStackTrace();
}

3> 正常循环 :-

for (int i=0;i<list.size();i++) {
    System.out.println(list.get(i));
    list.add("f");
}

现在,特殊的问题是,当使用高级 for 循环和迭代器时,我得到以下异常:-

java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)


the reason i know, that while iterating through a list, one cannot modify it parallely.

但是当我使用正常的 for 循环时,它就可以正常工作,我错过了什么吗?

请帮忙!!!..


如果修改 List,则会导致从它创建的任何 Iterator 对象失效。高级循环 (1) 编译为与迭代器循环 (2) 几乎相同的代码,这意味着在幕后创建了一个 Iterator 对象。

javadoc 为并发修改异常 http://download.oracle.com/javase/1.4.2/docs/api/java/util/ConcurrentModificationException.html有更多详细信息。

如果你想在迭代时添加,请使用

ListIterator listIter = ...
while(listIter.hasNext())
{
    if(shouldAdd(iter.next())) {
        iter.add(....)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遍历列表时出现 ConcurrentException 的相关文章

  • Spring MVC 中的 CSRF(跨站请求伪造)保护

    我对春季的 CSRF 跨站请求伪造 保护有点困惑 不 我有我的 jsp 我的控制器和一个 Web 服务 我想要做的是在 Web 服务级别验证令牌 如果令牌匹配 则运行 Web 服务 在我的例子中执行数据库插入 JSP file
  • Spring boot 404错误自定义错误响应ReST

    我正在使用 Spring boot 来托管 REST API 即使浏览器正在访问 URL 以及自定义数据结构 我也希望始终发送 JSON 响应 而不是使用标准错误响应 我可以使用 ControllerAdvice 和 ExceptionHa
  • Java:BufferedInputStream 的 available() 方法存在问题

    我正在处理以下代码 用于将大文件拆分为一组较小的文件 FileInputStream input new FileInputStream this fileToSplit BufferedInputStream iBuff new Buff
  • Java - 了解 PrintWriter 和刷新的需要

    好吧 首先我对所有代码表示歉意 但我觉得代码太多总比代码不够好 我正在制作一个简单的聊天客户端和印刷机 尤其是我正在努力解决的问题 使用现在的代码 它将与服务器类交互 并且完美地打印我想要打印的内容 但是 当我删除 writer flush
  • SimpleDateFormat 无法正确处理 DD

    我正在尝试获得这样的格式 2013 06 15 17 45 我在代码中执行以下操作 Date d new Date SimpleDateFormat ft new SimpleDateFormat YYYY MM DD HH mm Stri
  • ORMLite - join where 子句中的括号

    我想使用连接三个表QueryBuilder join and QueryBuilder joinor但我想在 where 子句中添加括号 如下所示 WHERE first table where AND second table where
  • BigDecimal 中 Divide 方法的 Scale()

    new BigDecimal 37146555 53880000 divide new BigDecimal 1000000 scale 这返回10 但根据API divide method 返回一个 BigDecimal 其值为 这个 除
  • AES BadPaddingException

    如果我使用错误的密钥或错误的盐进行解密 则会引发 BadPaddingException 我希望返回一个不正确的字符串 doFinal 导致解密方法出现异常 信息 This is just an example Unfug S F V s
  • java模拟自定义对象

    public class MainClass public void makeCall CustomObject obj new CustomObject obj testMethod 我想进行单元测试makeCall 所以我必须嘲笑Cus
  • 给定一个正整数 n,如何打印高度为 n-1 的数字三角形?

    HackerRank 三角任务 https www hackerrank com challenges python quest 1 problem 仅使用算术运算 单个for loop 和一个单一的print陈述 不允许进行字符串操作 约
  • 读取 Nashorn JO4 和 NativeArray

    Java调用代码 import jdk nashorn api scripting myCustomHashMap dataStore new myCustomHashMap ScriptEngineManager sem new Scri
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • JavaFX 动画使用循环?

    我正在尝试制作一款类似太空侵略者的游戏 我画了一个正方形 我想通过使用循环逐步向下移动它thread sleep 然而 正方形立即被绘制出来 我知道有可以使用的动画路径 但我想保持低水平并仅使用坐标系 有没有办法使用这样的循环来制作时间轴动
  • 未从线程接收位置数据

    我尝试使用计时器经常发送包含用户位置的短信 最初 我遇到了空指针异常 这是由于我犯了一个简单的错误 一旦解决了这个问题 一切似乎都运行良好 但是 它永远不会获取我的位置 因此 不断发送的文本显示 无法接收位置 我想问的是为什么它无法获取我的
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • 不想保留一对一的实体

    假设我有两节课Employee and Department In Employee我已经写了 OneToOne fetch FetchType EAGER cascade CascadeType ALL JoinColumn name d
  • 错误:列“this_.phitorsionangle”必须出现在 GROUP BY 子句中或在聚合函数中使用

    我在执行 sql 查询时遇到了一些问题 我正在使用 Hibernate Criteria 来构建查询 我通过按一定间隔 binSize 舍入值然后对它们进行分组来从数据库创建一些容器 当我直接在 SQL 中使用查询尝试时 效果非常好 SEL
  • JSF“总”变量类似于 JSTL 中的 c:set

    我不喜欢 JSF 但我需要用它来解决这个问题 我正在 纯 JSF 中工作 所以这就是我基本上需要的 但我不知道如何用 JSF 来实现它
  • 如何设置 commons-logging 来使用 logback?

    我们使用 slf4j logback 并且碰巧有一些使用 commons logging 的第三方库 如何设置它以使用 logback 答案是不要使用 commons logging jar 因为 SLF4J 的设计目的与 commons
  • JavaFX 中的 MVC 模式与场景生成器

    我是 JavaFX 新手 根据我当前的设置 正在努力创建合适的 MVC 架构 我使用 Scene Builder 单击了一个 UI 并指定了一个 Controller 类 Startup public class Portal extend

随机推荐

  • 如何在 JSF 框架中使用 li 和 ul 标签?

    如何在 JSF 框架中使用 li 和 ul 标签 您可以将标准 html 与 JSF 语法混合使用 写吧 ul li Apple li li Banana li ul 我猜你想要的是显示一个列表List 如果您使用 Facelets 请执行
  • 如何在 Swift 中从 hashValue 实现 hash(into:) ?

    我不太清楚如何处理编译器发出的不使用警告hashValue而是实施hash into Hashable hashValue 作为协议要求已被弃用 符合 通过实现 hash into 将 MenuItem 键入 Hashable 答案来自Sw
  • EditText 提示在 5.0.1 中不显示

    我有最新的 5 0 1 更新 EditText 提示已停止显示 I have
  • 我可以使用 标签跨域发送 cookie 吗?

    看看这个情况 www websitea com显示一个img带有一个标签src的属性www websiteb com image aspx id 5 and style display none www websiteb com除了名称为
  • 无法在 OS X 上链接到 Boost.Python

    我正在尝试使用 Boost Python 构建一个非常简单的示例 我已经用自制软件安装了 boost 和 boost python 我正在使用 python 3 4 3 和 boost 1 59 我的操作系统是 El Capitan Boo
  • SQL:将具有增量 id 的列添加到 SELECT

    我有一个简单的查询 例如 SELECT name FROM people The people表没有唯一的 id 列 我想在查询结果中添加一列id与增量int从 0 或 1 开始 无所谓 如何才能实现这一目标呢 postgresql 数据库
  • 什么时候(如果有的话)可以部分应用类型同义词?

    我写的显然有点心不在焉就像是 https github com leftaroundabout manifolds commit 3cef6cd231130fa179a1812df7f07e8c53bff3ff diff e59c01034
  • 如何使用 Maven 以编程方式下载 jar

    我正在编写一个应用程序 需要我下载一个给定 mavens groupid artifactid version 的 jar 我目前从 public Model pomToModel String pomUrl throws Exceptio
  • 分隔两个 Base64 字符串的最佳方法

    我正在使用标准输入和输出将 2 个 base64 字符串从一个应用程序传递到另一个应用程序 分离它们的最佳方法是什么 以便我可以在其他应用程序中将它们作为两个单独的字符串 我正在考虑使用一个简单的逗号来分隔它们 然后使用 string s
  • 如何从oracle表中选择偶数记录?

    我正在使用下面的查询来检索偶数记录 但在结果中它没有显示任何行 select ename job from emp where mod rownum 2 0 为什么 mod rownum 2 在 where 条件下不起作用 您还可以给出选择
  • 一般错误:1215 无法添加外键约束,Laravel 5 和 MySQL

    在一个空白的 Laravel 项目中 我想在之间创建外键约束users and 问题 where users表将容纳内置 LaravelUser but Question将是一个定制模型 运行后php artisan migrate出现以下
  • Vue计算问题-什么时候再次计算

    Vue计算已经让我困惑了一段时间 什么时候会再次计算 条件1 data return cart item nums 10 price 10 computed total return this cart item nums this car
  • SQLITE_BUSY 数据库被锁定 java

    我创建了一个使用 sqlite 数据库的 java 软件 整个数据库工作顺利 但是在运行应用程序一段时间后 我收到以下消息 来自 try catch 块 java sql SQLException SQLITE BUSY 数据库文件被锁定
  • 硬币游戏算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 来玩个游戏 有 n 叠硬币排成一排
  • 如何处理Spring Boot重定向到/错误?

    我遇到了同样的问题这个问题 https stackoverflow com questions 28902374 spring boot rest service exception handling 使用 Spring Boot 1 3
  • c++ windows中什么进程正在监听某个端口

    我用 Visual C 创建了一个程序 在其中实现了一个 Web 服务 Web 服务设置为侦听端口 80 但如果另一个程序已在使用此端口 则 Web 服务将无法启动 因此 当Web服务无法启动时 我希望有一个函数或方法 它可以获取当前使用端
  • 如何在 Google BigQuery 中将日期解析为周年?

    我需要选择两组数据 一组来自上周 一组来自去年同一周 我看到这个工作的方式是提取周数 所以 SELECT EXTRACT WEEK FROM DATE FIELD 然后我根据上周一得到去年的年份值 就像这样 SELECT DATE SUB
  • 使用 Octokit 更新 GitHub 存储库中的文件

    我正在尝试开发一个 Windows 窗体应用程序 可以使用 Octokit 创建 更新和删除 GitHub 存储库中的文件 public Form1 InitializeComponent var ghClient new GitHubCl
  • 实体框架核心 5 - 从单个存储过程返回两个 Oracle 游标

    我正在开发一个 API 它调用 Oracle 存储过程 我无法触及它 并返回two参考光标 问题是在我的代码中 只有从 sp 返回的第一个游标被映射 而另一个游标则被映射无效操作异常 我的存储库类 var sql BEGIN CCO PKG
  • 遍历列表时出现 ConcurrentException

    我现在的状态很奇特 我有一个如下所示的列表 List