我在整个迭代器概念上遇到了一些麻烦,对于我的一个测验中的一个问题,老实说我无法理解发生了什么。
public static void main(String[] args)
{
Deque<String> SQ1 = new ArrayDeque<String>();
SQ1.add("Give");
SQ1.add("Me");
SQ1.add("The");
SQ1.add("Best");
SQ1.add("Of");
SQ1.add("Both");
SQ1.add("Worlds");
Iterator<String> It = SQ1.iterator();
while(It.hasNext())
{
if(It.next().equals("Give"))
System.out.print(It.next());
}
}
这是代码,问题是输出是什么。正确答案是"Me"
当我以为是"Give"
时。我不明白整个运行过程是怎样的。
我的理解是这样的:
它确实有一个 next
。如果是next
等于 "Give"
,它会打印出next
值(value)。在这种情况下,该值应该是“Give”,不是吗?
有人可以帮我理解这一点吗?
最佳答案
if 语句调用 It.next()
检查值,print 语句再次调用 It.next()
,而不是打印您刚刚检查的值。
因此,您看到的始终是紧接在“Give”
之后的元素。
关于java - 迭代器困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274217/