【发布时间】:2020-06-23 09:05:55
【问题描述】:
我有一个自定义对象列表。我需要从该列表中获取/删除特定对象,但根据我需要搜索的内容,实现的 equals 不起作用。
以下将起作用:
int index = -1;
for(int i = 0; i < list.size(); i++) {
if(list.get(i).getAttr().equals(arg)) {
index = i;
break;
}
}
CustomObject = list.remove(index);
// use CustomObject here
我想知道我是否可以在for 循环中执行list.remove,尽管没有使用iterator,因为循环会立即中断
【问题讨论】:
-
何不试试看呢?
-
@Michael:因为
list是作为接口传递的,所以我不想做一个适用于例如的解决方案。那个版本的java中的ArrayList -
好的,那么是什么阻止您尝试使用 4 个主要的 List 实现,并将这些发现作为您的问题的基础?
-
是的。您也可以使用
list.removeIf((a)->a.getAttr().equals(arg));,但这会删除所有满足条件的元素,而不仅仅是第一个。
标签: java list collections