当前位置: 首页 > 知识库问答 >
问题:

java ArrayList在迭代时删除对象[duplicate]

包嘉懿
2023-03-14
String item = (String) model.getElementAt(selectedIndices[i]);
Iterator it = p.eggMoves.iterator();
while(it.hasNext())
{
    String text = (String) it.next();
    if ( text.equals(item) )
    {
        it.remove();
        p.eggMoves.remove(selectedIndices[i]);
        model.removeElementAt(selectedIndices[i]);
    }
}

现在,这段代码运行良好,该项从p对象和jlist中都被删除,但它在it.next()行抛出一个“ConcurrentModificationException”异常。

我怎么解决这个?

共有1个答案

冯枫涟
2023-03-14

只需在迭代时使用it.remove()删除该项。

线以下是导致问题的原因

p.eggMoves.remove(selectedIndices[i]);

你想通过一次又一次地移除相同的项目(在索引i处)来做什么?

 类似资料:
  • 问题内容: 一段时间以来,我一直在努力解决此错误,而且我不知道问题出在哪里。我的代码是这样的: 它在remove调用上引发IllegalStateException。 我一直在想问题是否会出现,因为我要删除列表的最后一项,但即使在过程的中间,它似乎也会出错。 你们能给我一个解释吗? 问题答案: 您正在从内部循环内部的列表中删除一个元素。这意味着您的内部循环可能会尝试两次删除相同的元素,这将解释您遇

  • AFAIK,有两种方法: 迭代集合的副本 使用实际集合的迭代器 例如, 而且 有没有理由偏爱一种方法而不是另一种方法(例如,由于可读性的简单原因而偏爱第一种方法)?

  • 问题内容: 我们都知道,在迭代时从集合中删除对象的最安全的“可能也是唯一安全的”方法是,首先检索,执行循环并在需要时删除; 我想了解但不幸的是,还没有找到深入的技术解释,即如何执行此删除操作, 如果: 会抛出“技术术语” 做什么?它是否会删除对象,中断循环并重新启动循环? 我在官方文档中看到: “删除当前元素。如果尝试调用之前未调用next()的方法,则抛出该异常。 “删除当前元素”部分使我想到了

  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。

  • 我已经在这上面耽搁了一段时间了。我正在尝试删除一个集合的元素,如果他们制定了一个集合的标准。然而,在迭代时,当我试图移除元素时,它失败了。 我得到java.util.concurrentModificationException 如有任何建议,将不胜感激。

  • 问题内容: 假设我有一个这样的架构: 如果删除一个人,那么仍然存在孤立的作业,这些作业引用了一个不存在的人,这在数据库中造成了混乱。 有没有一种简单的方法来确保删除一个人时,对该人的所有相应引用也将被删除? 问题答案: 您可以在架构上添加自己的Mongoose 中间件,以将该人从引用该人的所有其他文档中删除。在中间件功能中,就是要删除的文档。