我在类中有以下代码:
private HashMap<Long, Item> items;
private Iterator<Item> iterator;
@Override
public Iterator<Item> iterator()
{
iterator = items.values().iterator();
return iterator;
}
我想知道这是否会导致每次都返回一个新的迭代器实例,即如果从此方法获取两个迭代器将返回对同一对象的引用。
此代码中是否还有其他明显的差异?
答案 0 :(得分:6)
每次在标准集合上调用iterator()
时,都会创建一个新的Iterator。否则就不可能有多个指向同一集合的不同元素的迭代器。
您将获得的迭代器分配给成员变量,因此每次调用iterator()
方法时,private Iterator<Item> iterator
都将被重置。我不确定你为什么要创建并返回一个迭代器,并将迭代器存储在一个私有变量中,但你肯定得到了你的理由......