【发布时间】:2012-08-20 11:35:00
【问题描述】:
注意:我不知道 doSomething 是否会删除该元素。这是我的数据结构需要处理的例外情况。
我的问题很简单:
int size = list.size();
for(int i = 0; i < size; i++) {
MyObj mo = list.get(i);
mo.doSomething();
}
现在如果 doSomething() 从列表中删除 mo,我最终会得到一个 ArrayIndexOutOfBounds,因为列表现在已经缩小了。
我应该使用什么数据结构来允许迭代并可能删除?我不能在这里使用迭代器,换句话说,我不能让 doSomething 返回一个布尔值并调用 iterator.remove()。数据结构必须以某种方式处理这种情况并继续迭代仍然存在的其余元素。
编辑:我不知道 doSomething 是否会删除该元素。这是我的数据结构需要处理的例外情况。
第二部分 => Making a smart listeners notifier to avoid code duplication everywhere
【问题讨论】:
-
你知道
doSomething()是否真的删除了mo吗?如果是这样,请稍后致电--i,您会没事的。 -
@TomaszNurkiewicz 这就是问题所在,Tomasz,我不知道,所以你的解决方案不起作用。 :(
标签: java algorithm list data-structures collections