迭代列表删除元素

时间:2013-08-13 14:02:59

标签: java

我想迭代某种列表,检查它的元素是否符合属性,以及它们是否不从数组中删除它们。我认为是这样的:

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会起作用,因为每次删除时我都必须移动元素,并且我无法确保我将删除的元素位于列表的头部或尾部。

2 个答案:

答案 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)

您应该使用Iterator从列表中删除元素。您可以将它与ArrayList一起使用。

List<YourDataType> yourList = new ArrayList<YourDataType>();
Iterator<YourDataType> it = yourList.iterator();
while (it.hasNext()) 
       it.remove();

使用此方法,您可以使用if-else指定应删除的元素。

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