Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在遍历列表时删除列表项_Java - Fatal编程技术网

Java 在遍历列表时删除列表项

Java 在遍历列表时删除列表项,java,Java,我有以下代码 final List<ItemDto> itemDtos = result.getResults(); List<String> deleteItemIds = new ArrayList<String>(); // remove items which have been deleted on the server for(ItemDto itemDto : itemDtos) { if (itemDto.getIsRemoved())

我有以下代码

final List<ItemDto> itemDtos = result.getResults();
List<String> deleteItemIds = new ArrayList<String>();

// remove items which have been deleted on the server
for(ItemDto itemDto : itemDtos) {
  if (itemDto.getIsRemoved()) {
    deleteItemIds.add(itemDto.getId());
    itemDtos.remove(itemDto);  //  TODO not sure if this works here
  }
}

第二种变体更好吗?

要安全地从列表中删除元素,您应该使用列表的
迭代器,如下所示:

for (Iterator<ItemDto> iterator = itemDtos.iterator(); iterator.hasNext()) {
    ItemDto itemDto = iterator.next();
    if (itemDto.getIsRemoved()) {
        deleteItemIds.add(itemDto.getId());
        iterator.remove(); 
    }
}
for(Iterator Iterator=itemDtos.Iterator();Iterator.hasNext()){ ItemDto ItemDto=iterator.next(); if(itemDto.getIsRemoved()){ deleteItemId.add(itemDto.getId()); iterator.remove(); } }
要安全地从列表中删除元素,您应该使用列表的
迭代器,如下所示:

for (Iterator<ItemDto> iterator = itemDtos.iterator(); iterator.hasNext()) {
    ItemDto itemDto = iterator.next();
    if (itemDto.getIsRemoved()) {
        deleteItemIds.add(itemDto.getId());
        iterator.remove(); 
    }
}
for(Iterator Iterator=itemDtos.Iterator();Iterator.hasNext()){ ItemDto ItemDto=iterator.next(); if(itemDto.getIsRemoved()){ deleteItemId.add(itemDto.getId()); iterator.remove(); } }
要安全地从列表中删除元素,您应该使用列表的
迭代器,如下所示:

for (Iterator<ItemDto> iterator = itemDtos.iterator(); iterator.hasNext()) {
    ItemDto itemDto = iterator.next();
    if (itemDto.getIsRemoved()) {
        deleteItemIds.add(itemDto.getId());
        iterator.remove(); 
    }
}
for(Iterator Iterator=itemDtos.Iterator();Iterator.hasNext()){ ItemDto ItemDto=iterator.next(); if(itemDto.getIsRemoved()){ deleteItemId.add(itemDto.getId()); iterator.remove(); } }
要安全地从列表中删除元素,您应该使用列表的
迭代器,如下所示:

for (Iterator<ItemDto> iterator = itemDtos.iterator(); iterator.hasNext()) {
    ItemDto itemDto = iterator.next();
    if (itemDto.getIsRemoved()) {
        deleteItemIds.add(itemDto.getId());
        iterator.remove(); 
    }
}
for(Iterator Iterator=itemDtos.Iterator();Iterator.hasNext()){ ItemDto ItemDto=iterator.next(); if(itemDto.getIsRemoved()){ deleteItemId.add(itemDto.getId()); iterator.remove(); } }
在最后一个循环中执行循环时,不能从列表中删除对象。但是您可以使用迭代器

    Iterator<ItemDto> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        ItemDto item = iterator.next();
        //Do your job
        iterator.remove();
    }
Iterator Iterator=arrayList.Iterator();
while(iterator.hasNext()){
ItemDto item=iterator.next();
//做好你的工作
iterator.remove();
}

第二种解决方案是第一次循环查找所有要删除的元素,将它们存储在列表中,然后从第一个列表中删除它们。removeAll。

在最后一次循环时,无法从列表中删除对象。但是您可以使用迭代器

    Iterator<ItemDto> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        ItemDto item = iterator.next();
        //Do your job
        iterator.remove();
    }
Iterator Iterator=arrayList.Iterator();
while(iterator.hasNext()){
ItemDto item=iterator.next();
//做好你的工作
iterator.remove();
}

第二种解决方案是第一次循环查找所有要删除的元素,将它们存储在列表中,然后从第一个列表中删除它们。removeAll。

在最后一次循环时,无法从列表中删除对象。但是您可以使用迭代器

    Iterator<ItemDto> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        ItemDto item = iterator.next();
        //Do your job
        iterator.remove();
    }
Iterator Iterator=arrayList.Iterator();
while(iterator.hasNext()){
ItemDto item=iterator.next();
//做好你的工作
iterator.remove();
}

第二种解决方案是第一次循环查找所有要删除的元素,将它们存储在列表中,然后从第一个列表中删除它们。removeAll。

在最后一次循环时,无法从列表中删除对象。但是您可以使用迭代器

    Iterator<ItemDto> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        ItemDto item = iterator.next();
        //Do your job
        iterator.remove();
    }
Iterator Iterator=arrayList.Iterator();
while(iterator.hasNext()){
ItemDto item=iterator.next();
//做好你的工作
iterator.remove();
}


第二种解决方案是第一次循环查找所有要删除的元素,将它们存储在列表中,然后将它们从第一个列表中删除感谢list.removeAll。

这会引发并发项目修改异常,对吗?要在遍历列表时从列表中删除项目,应使用迭代器并使用迭代器。remove方法可能。。。你为什么不告诉我们?编写一个单元测试,看看它是否按照您期望的方式工作请看这篇文章:这会引发并发项修改异常,对吗?要在遍历列表时从列表中删除项,您应该使用迭代器并使用迭代器。删除方法可能。。。你为什么不告诉我们?编写一个单元测试,看看它是否按照您期望的方式工作请看这篇文章:这会引发并发项修改异常,对吗?要在遍历列表时从列表中删除项,您应该使用迭代器并使用迭代器。删除方法可能。。。你为什么不告诉我们?编写一个单元测试,看看它是否按照您期望的方式工作请看这篇文章:这会引发并发项修改异常,对吗?要在遍历列表时从列表中删除项,您应该使用迭代器并使用迭代器。删除方法可能。。。你为什么不告诉我们?编写一个单元测试,看看它是否按照您期望的方式工作看看这篇文章:它能与我在编辑中发布的第二个变体一起工作吗?在第二个变体中你仍然没有使用迭代器。要安全地删除项目,您必须使用迭代器。它是否适用于我在编辑中发布的第二个变体?您在第二个变体中仍然没有使用迭代器。要安全地删除项目,您必须使用迭代器。它是否适用于我在编辑中发布的第二个变体?您在第二个变体中仍然没有使用迭代器。要安全地删除项目,您必须使用迭代器。它是否适用于我在编辑中发布的第二个变体?您在第二个变体中仍然没有使用迭代器。要安全删除项目,您必须使用迭代器。迭代器是否适用于我在编辑中发布的第二个变量?它是否适用于我在编辑中发布的第二个变量?它是否适用于我在编辑中发布的第二个变量?它是否适用于我在编辑中发布的第二个变量?