遍历删除元素的列表



我想遍历某种列表,检查其元素是否符合属性,以及是否没有从数组中删除它们。我的想法是这样的:

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来指定应该删除的元素。

这应该会给你一些提示,为什么你应该使用迭代器。

最新更新