gpt4 book ai didi

java:使用迭代器时从数组列表中删除元素

转载 作者:行者123 更新时间:2023-12-02 07:58:41 25 4
gpt4 key购买 nike

我使用一个对象列表,每个对象包含一个数字和一个字符串名称。当同名对象在我的列表中出现两次时,我将其中一个的数量更新 1 并删除另一个,到目前为止一切顺利。

但是当我从此列表中删除一个对象时,迭代器仍然会带回我刚刚删除的对象,它不再在列表中,但仍然具有我认为的相同位置。

示例:

x 1;
x 1;
y 1;
z 1;

我删除第二个 x 并更新另一个 x 的计数:

x 2;
y 1;
z 1;

但是现在迭代器给我带回了最初位于位置 2 的 x 1,对于迭代器来说它仍然是这样的:

x 1;
[x1];
y 1;
z 1;

(至少这是我认为会发生的事情,现在尝试了几个小时..)

有什么方法可以告诉迭代器列表已更改吗?我刚刚读到了有关迭代器的remove() 方法的内容,我在这儿吗?

最佳答案

是的,您应该使用迭代器上的remove方法从集合中删除项目,而不是直接从集合中删除项目。一般来说,如果在迭代集合时添加或删除元素,则迭代器将不再正常工作。但是,在迭代器上调用 remove 将正常工作(如果已实现)。

Iterators allow the caller to remove elements from the underlying collection during the iteration with well-defined semantics.

The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling [remove].

<小时/>

顺便说一句,您试图解决的实际问题似乎与本问题中的问题非常相似,因此您可能还想查看此处的答案以获取替代(更简单)的方法:

关于java:使用迭代器时从数组列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com