Java 是否在每次调用 iterator() 时都创建一个新实例?

Does Java create a new instance of iterator() each time it's called?

我在 class 中有以下代码:

private HashMap<Long, Item> items;
private Iterator<Item> iterator;

@Override
public Iterator<Item> iterator()
{
    iterator = items.values().iterator();
    return iterator;
}

我想知道这是否会导致迭代器的新实例每次都被 return 编辑,即如果从此方法获得两个迭代器将 return 引用同一对象。

此外,此代码中还有其他明显的差异吗?

每次对标准集合调用 iterator() 时,都会创建一个新的迭代器。否则不可能有多个迭代器指向同一个集合的不同元素。

您将获得的迭代器分配给一个成员变量,因此每次调用您的 iterator() 方法时,private Iterator<Item> iterator 将被重置。我不确定您为什么要创建并 return 一个迭代器并将该迭代器存储在私有变量中,但您肯定有自己的理由...