Java每次调用时都会创建一个新的iterator()实例吗?

Hel*_*ele 3 java iterator

我在类中有以下代码:

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

@Override
public Iterator<Item> iterator()
{
    iterator = items.values().iterator();
    return iterator;
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否会导致每次都返回一个新的迭代器实例,即如果从此方法获取两个迭代器将返回对同一对象的引用.

此外,此代码中是否还有其他可见的差异?

Phi*_*ipp 6

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

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