java - 可以在同一列表的另一个迭代中迭代列表吗?

标签 java iterator

我在 ArrayList 中有一些对象,我想执行碰撞检测等。可以这样做吗:

List<Person> A;
iterA0 = A.iterator();
while (iterA0.hasNext()) {
    Person A = iterA.next();
    iterA1 = A.iterator();
    while (iterA1.hasNext()){
        Person B = iterA1.next();
        A.getsDrunkAndRegretsHookingUpWith(B);
    }
}

这一定是糟糕的编码,对吧?我将如何正确执行此嵌套迭代?

最佳答案

您可以同时多次迭代同一个列表,只要它在任何迭代期间都没有被修改。例如:

List<Person> people = ...;
for (Person a : people) {
    for (Person b : people)
        a.getsDrunkAndRegretsHookingUpWith(b);
}

只要 getsDrunkAndRegretsHookingUpWith 方法不更改 people 列表,就没有问题。

关于java - 可以在同一列表的另一个迭代中迭代列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762142/

相关文章:

C++ 如何重载一个函数,该函数将不同模板对象的迭代器作为参数?

java - 在java中按单词反转字符串(不使用StringBuilder)

java - 当原始列表被修改时,Collections.in modulated list() 返回的 Arraylist 会发生什么?

c++ - directory_iterator - 复制到 "rewind"?

c++ - STL 算法和 const_iterators

c++ - 如何在 C++ 中将迭代器插入二叉树?

java - 使用 ListIterator 打印数组列表

java - 在 Eclipse IDE 中附加用于调试的 Play Framework 源的最佳方法是什么

java - 使 AnchorPane 可根据其父级调整大小

java - 卡夫卡生产者和消费者问题