【发布时间】:2011-01-10 13:37:43
【问题描述】:
我有如下代码,它在迭代器上使用 remove 显示:
Collection<X> getdata(){
Collection<X> Xs = this.getXs();
Iterator<X> iterator = Xs.iterator();
while (iterator.hasNext()) {
X x = iterator.next();
if (somecondition) {
iterator.remove();
}
}
}
return Xs;
}
它有时有效,有时需要很长时间,我的线程挂起。 getXs 方法从 DB 中返回数据。
【问题讨论】:
-
信息不足
-
还需要什么信息?
-
哪些代码行很慢? getXs() 访问数据库很慢?还是“某些条件”很复杂?还是使用了 ORM 集合?
-
你使用什么样的 Collection?
-
如果
Xs以某种方式绑定到数据库本身(即在其上调用remove()或其迭代器实际上从数据库中删除了一行),那么remove()可能是一项昂贵的操作(但不应该比Collection本身上的remove()贵)。基本上:什么 org.life.java 说的!