gpt4 book ai didi

java - Iterator.hasNext() 似乎不会对列表中的最后一项返回 false

转载 作者:行者123 更新时间:2023-12-01 18:33:38 24 4
gpt4 key购买 nike

我在 for 循环中有一个 if-else 函数,迭代列表。当我到达此列表的最后一个元素时,我希望它执行一项操作,但它似乎不起作用。这是我的代码的概要:

for(Item t: itemList){
if(....){
}
else if(....){
}
else if(currentStartTime>previousFinishTime){
System.out.println("C");
if(itemList.iterator().hasNext()==false){
System.out.println("end of array");
EFTs.add(EFT);}
else{.....;}
}

当我用列表中的最后一项触发此条件时(即最后一项具有 currentStartTime>previousFinishTime,我知道这是正确的,因为它打印 C),我的 if 条件中没有任何内容触发。我是否误解了 hasNext() 函数的用途?

谢谢

最佳答案

itemList.iterator().hasNext()==false

itemList.iterator() 指的是一个全新的迭代器。它不是指 for 循环中使用的迭代器。 itemList.iterator() 实际上总是从列表的开头开始,因此 hasNext() 会告诉您列表是否为空。

要使用这样的迭代器,您需要创建自己的循环,例如:

for(Iterator<Item> iter = itemList.iterator(); iter.hasNext(); ) {
Item item = iter.next();
if(iter.hasNext()) {
}
}

但是 95% 的情况下,您应该能够在循环之后而不是在最后一次迭代期间执行您想做的任何操作。

关于java - Iterator.hasNext() 似乎不会对列表中的最后一项返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23005898/

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