遍历列表时出现 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 的相关文章

  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 对 PLSQL 中的每个表执行

    我想要所有表中匹配特定名称条件的记录数 这是我构建的 SQL Declare SQLStatement VARCHAR 8000 BEGIN SELECT SELECT COUNT FROM Table Name INTO SQLState
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 如何在 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