gpt4 book ai didi

java - 为什么迭代器在 for 循环中不是 "Move Next"

转载 作者:行者123 更新时间:2023-11-30 08:10:41 27 4
gpt4 key购买 nike

我正在学习迭代,并使用以下私有(private)属性在我的“CStickChart”类上实现了迭代器:

  private List<CStick> cStickCollection = new ArrayList<CStick>();

然后实现返回CSticks的方法:

  public Iterator<CStick> iterator() {
return this.cStickCollection.iterator();
}

现在,当我尝试迭代它时,我可以使用分配的 localCStick 来执行此操作,但调用 CStickChart 迭代器上的 next() 方法不会执行我期望的操作。我希望它能够在我的 CStickChart 中为我提供下一个 CStick(因此,当我调用 getEPIC 时,我希望它能够为我提供下一个 EPIC)。

// Print the EPIC out of the Array using the iterator
for (CStick localCStick : testCStickChart) {
System.out.println(localCStick.getEPIC());
//The below line doesn't return the next CStick and I'm not sure why
System.out.println("next EPIC is " + testCStickChart.iterator().next().getEPIC());
}

请有人解释一下为什么情况并非如此(它总是返回第一个 EPIC)

最佳答案

System.out.println("next EPIC is " + testCStickChart.iterator().next().getEPIC());

发生这种情况是因为在这一行中,您在循环的每次迭代中都会获得一个新的迭代器。每个新的迭代器都会再次从列表的开头开始。

关于java - 为什么迭代器在 for 循环中不是 "Move Next",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425944/

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