簡體   English   中英

java:使用迭代器時從arraylist中刪除元素

[英]java: delete elements from arraylist while using iterator

我使用一個對象列表,每個對象包含一個數字和一個字符串名稱。 當一個具有相同名稱的對象在我的列表中兩次時,我將其中一個的數量更新為1並刪除另一個,到目前為止一切都很好。

但是當我從這個列表中刪除一個對象時,迭代器仍然會帶回我剛剛刪除的那個,它不再在列表中,但我仍然有相同的位置。

例:

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

我刪除第二個x並更新另一個的計數:

x 2;
y 1;
z 1;

但是現在迭代器把我帶回了x 1,它在開頭的第二個位置,對於迭代器它仍然看起來像這樣:

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

(至少這是我認為會發生什么,現在嘗試幾個小時..)

有沒有辦法告訴迭代器列表已更改? 我剛剛讀到了迭代器的remove()方法,我就在這里嗎?

是的,您應該在迭代器上使用remove方法從集合中刪除該項,而不是直接從集合中刪除該項。 通常,如果在迭代集合時添加或刪除元素,則迭代器將不再正常工作。 但是,在迭代器上調用remove將正常工作(如果已實現)。

迭代器允許調用者在迭代期間使用定義良好的語義從底層集合中刪除元素。

如果在迭代正在進行中以除調用[remove]之外的任何方式修改基礎集合,則未指定迭代器的行為。


作為旁注,您嘗試解決的實際問題似乎與此問題中的問題非常相似,因此您可能還希望在此處查看替代(更簡單)方法的答案:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM