为什么在这种情况下不创建新的迭代器对象?

时间:2018-10-16 04:35:11

标签: java iterator deque

这真的让我很困惑。基本上,我想交替打印两个1d向量的元素。我发现下面附有其他人写的解决方案。 在main方法中,我们调用346打印zigzagIterator.next()返回的数字

int num = iter.next()方法中,似乎每次调用next()方法时都会创建一个新的iter对象。但是当我调试时,我发现只创建了两个迭代器对象。一个用于a1,另一个用于a2。这样,每个迭代器对象中的光标都将其内存进行迭代直到结束。

next()被多次调用对我来说没有任何意义,但是只创建了两个对象。希望有人能帮忙!非常感谢。

Iterator<Integer> iter = deque.pollLast()

1 个答案:

答案 0 :(得分:1)

这是因为对象引用保持不变,同时将创建的新对象分配给2个引用(v1,v2)。因此,最后2个对象将获得2个引用,从而产生2个可用对象,而其他对象可以被垃圾回收

访问 https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html