我想迭代某种列表,检查它的元素是否符合属性,以及它们是否不从数组中删除它们。我认为是这样的:
int index = 0;
for(int i = 0; i < list.size(); ++i) {
if(list.isProperty()) list.delete(index) //We delete the element at list[index]
else ++index;
}
也许这些不是java中列表界面的真正方法,但它们是不言自明的。
这是一个好方法吗?如果我必须多次运行此操作,哪种数据结构最适合?我不认为arrayList会起作用,因为每次删除时我都必须移动元素,并且我无法确保我将删除的元素位于列表的头部或尾部。
答案 0 :(得分:2)
您可以使用iterator实现它。没有并发修改异常。
假设您的列表包含对象A
List<A> list = new ArrayList<A>();
Iterator<A> iterator = list.iterator();
while (iterator.hasNext()) {
A current = iterator.next();
if(current.isProperty()) {
iterator.remove();;
}
}
答案 1 :(得分:1)