我在整个迭代器概念方面遇到了一些麻烦,并且在我的一次测验中遇到了一个问题,我实在无法理解到底发生了什么。迭代器混淆
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());
}
}
这是代码,问题是输出是什么。当我认为它是"Give"
时,正确答案是"Me"
。我不明白整个过程如何。
这是我明白的: 它的确有一个next
。如果next
等于"Give"
,则会打印出next
值。在这种情况下,该值应该是“给”,不是吗?
有人能帮我理解吗?
了'if'它调用'下一个()等于内部(。 “Give”)'当它迭代到''Give “'。然后在打印时,它再次调用'next()',它将它迭代到''我'“。 – Tricky12
谢谢!这是我的理论之一,但我认为这是没有道理的。谢谢你为我清除这些。 – user5666676
'返回迭代中的下一个元素.' - https://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html – Tricky12