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

时间:2015-01-01 05:01:49

标签: java iterator

我在类中有以下代码:

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

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

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

此代码中是否还有其他明显的差异?

1 个答案:

答案 0 :(得分:6)

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

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