gpt4 book ai didi

java - 从数组列表中删除对象

转载 作者:行者123 更新时间:2023-12-04 05:26:51 25 4
gpt4 key购买 nike

我有一个包含姓名、电话号码和位置的数组列表。

如果可能,我想从该数组中删除某些项目

一旦我像下面尝试过的那样找到它,有没有办法删除它?

public void delete(String nameToDelete) 
{
for (Entry entry : Directory.entries) {
if (entry.name.equalsIgnoreCase(nameToDelete))
{
//remove(entry);
}
}
}

谢谢

最佳答案

原因?

ArrayList 返回的迭代器是 fail-fast在自然界。

The iterators returned by this class's iterator and listIterator methods are fail-fast: if the list is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException. Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.



当我不使用它时,这个迭代器从哪里来?

对于集合的增强 for 循环 Iterator被使用,因此您在迭代时不能调用 remove 方法。

所以你的循环与下面相同
for (Iterator<Entry> i = c.iterator(); i.hasNext(); ){   

那么解决方案是什么?

您可以调用 iterator.remove();并基于迭代器显式而不是隐式更改循环。
    String inputWord = "john";
ArrayList<String> wordlist = new ArrayList<String>();
wordlist.add("rambo");
wordlist.add("john");
for (ListIterator<String> iterator = wordlist.listIterator(); iterator
.hasNext();) {
String z = iterator.next();
if (z.equals(inputWord)) {
iterator.remove();
}
}
System.out.println(wordlist.size());

现在我在哪里可以阅读更多内容?
  • The For-Each Loop
  • ArrayList Java docs
  • 关于java - 从数组列表中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13101279/

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