-1

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

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

4

2 回答 2

2

您可以使用迭代器来实现它。没有并发修改异常。

假设您的列表包含对象 A

List<A> list = new ArrayList<A>();

Iterator<A> iterator = list.iterator();
while (iterator.hasNext()) {
   A current = iterator.next();   

   if(current.isProperty()) {
   iterator.remove();;
  }
}
于 2013-08-13T14:09:00.617 回答
1

您应该使用Iterator从 List 中删除一个元素。您可以将其与 ArrayList 一起使用。

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

有了这个,您可以使用 if-else 来指定应该删除的元素。

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

于 2013-08-13T14:06:03.990 回答