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