我想遍历某种列表,检查其元素是否符合属性,以及是否没有从数组中删除它们。我的想法是这样的:
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不起作用,因为每次删除时我都必须在元素之间移动,而且我也不能确保要删除的元素在列表的开头或末尾。
您可以使用迭代器来实现它。没有并发修改异常。
假设您的列表由对象A 组成
List<A> list = new ArrayList<A>();
Iterator<A> iterator = list.iterator();
while (iterator.hasNext()) {
A current = iterator.next();
if(current.isProperty()) {
iterator.remove();;
}
}
您应该使用迭代器从列表中删除元素。您可以将其与ArrayList一起使用。
List<YourDataType> yourList = new ArrayList<YourDataType>();
Iterator<YourDataType> it = yourList.iterator();
while (it.hasNext())
it.remove();
有了它,您可以使用if-else来指定应该删除的元素。
这应该会给你一些提示,为什么你应该使用迭代器。