我在整個迭代器概念方面遇到了一些麻煩,並且在我的一次測驗中遇到了一個問題,我實在無法理解到底發生了什麼。迭代器混淆
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