我有一个代码如下,它在迭代器上使用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 方法从数据库返回数据。
最佳答案
迭代和删除本身不会出现您所描述的异常行为。还有其他工作环境条件。由于您描述了与数据库的交互,因此延迟和挂起很可能与代码与数据交互的方式有关。实际问题可能有无数的变化,因此您可以提供的任何其他详细信息(而不是您发布的非常笼统的示例)都将有助于解决您的问题。
关于java - 在迭代器上使用删除是否会使代码运行速度非常慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647389/