gpt4 book ai didi

java - 需要澄清 Oracle 教程解释何时使用迭代器与 for-each 结构

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:10 26 4
gpt4 key购买 nike

关于集合的 Oracle 教程 https://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html我看到以下内容:

Use Iterator instead of the for-each construct when you need to:

1. Remove the current element. The for-each construct hides the iterator, so you cannot call remove. Therefore, the for-each construct is not usable for filtering.
2. Iterate over multiple collections in parallel.

我理解迭代器支持但 for-each 构造不支持的第一个选项“删除当前元素”。我需要澄清第二个选项“并行迭代多个集合”,它可以使用迭代器而不是 for-each 来完成。有人可以提供这种情况的例子吗?据我所知,for-each 也可以嵌套,因此可以并行处理多个集合。

这不是 Iterator vs For-Each 的副本和 Iterator vs for因为他们问的是迭代器和for-each的一般比较,我问的是oracle教程中的具体句子。

最佳答案

假设您有两个集合:

List<A> listA = /*...*/;
List<B> listB = /*...*/;

...并且您需要并行遍历它们(即,处理每个中的第一个条目,然后处理每个中的下一个条目,等等)您不能使用增强的 for 循环,您将使用 Iterator:

Iterator<A> itA = listA.iterator();
Iterator<B> itB = listB.iterator();
while (itA.hasNext() && itB.hasNext()) {
A nextA = itA.next();
B nextB = itB.next();
// ...do something with them...
}

公平地说,您可以将增强的 for 循环与迭代器结合起来:

Iterator<A> itA = listA.iterator();
for (B nextB : listB) {
if (!itA.hasNext()) {
break;
}
A nextA = itA.next();
// ...do something with them...
}

...但是它很笨拙并且清晰度受到影响,只有一个集合可以作为 for 的主题,其余的必须是 Iterator

关于java - 需要澄清 Oracle 教程解释何时使用迭代器与 for-each 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54182103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com