gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:41 27 4
gpt4 key购买 nike

我在一个类中有以下代码:

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

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

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

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

最佳答案

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

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

关于java - Java 是否在每次调用 iterator() 时都创建一个新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27728400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com