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 一个迭代器并将该迭代器存储在私有变量中,但您肯定有自己的理由...
我在 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 一个迭代器并将该迭代器存储在私有变量中,但您肯定有自己的理由...