在迭代器上使用remove会使代码工作得很慢吗?

时间:2011-01-10 13:37:44

标签: java iterator

我有一个如下代码,它在迭代器上使用remove作为show:

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返回数据。

1 个答案:

答案 0 :(得分:3)

迭代和删除不会出现您自己描述的异常行为。还有其他环境条件在起作用。由于您描述了与数据库的交互,因此延迟和挂起与代码与数据交互的方式相关的可能性很大。可能存在的实际问题有无数变化,因此您可以提供的任何其他详细信息(与您发布的非常一般的示例相反)将有助于解决您的问题。