为什么使用迭代器而不是for循环?

Atl*_*s2k 1 java arrays iterator

我正在看这段代码:https://www.geeksforgeeks.org/bridge-in-a-graph/

Iterator<Integer> i = adj[u].iterator();
while (i.hasNext())
{
    int v = i.next();  // v is current adjacent of u
    ...
Run Code Online (Sandbox Code Playgroud)

为什么作者不使用for循环?这不一样吗?

for (int v: adj[u])
Run Code Online (Sandbox Code Playgroud)

Jac*_* G. 6

在Java中,一种用法Iterator<E>是从Collection<E>迭代中删除元素.如果你Collection在迭代它时尝试从同一个元素中删除相同的元素for (int v : adj[u]),那么ConcurrentModificationException就会抛出一个元素.

如果没有删除任何元素,那么是的,两种语法选择就足够了.

至于为什么该文章的作者没有使用for-loop,你必须问他们.他们的代码似乎没有从LinkedList<Integer>循环内删除任何元素,所以它很可能是一个潜意识的选择.