【发布时间】:2012-10-26 20:41:10
【问题描述】:
我有一个关于迭代器的小问题。
我目前想从两个对象列表中删除重复项。
我现在设置它的方式是,只要第二个列表(需要从第一个列表中删除的对象列表)有项目,执行合并的循环就会继续运行。
我一直在使用hasNext()函数来检查是否还有物品,但我认为这可能是一个小问题。
当迭代器指向列表中的最后一项并调用hasNext()时,它将返回false,因为最后一项之后没有任何内容。这意味着该项目不会从第一个列表中删除。这是真的吗?
代码如下:
for (Iterator<Card> discardItr = discard.iterator(); discardItr.hasNext();)
{
Card tempDiscard = discardItr.next();
Iterator<Card> mixedItr = mixedHand.iterator();
while (mixedItr.hasNext())
{
if (tempDiscard.equals(mixedItr.next()))
{
discardItr.remove();
mixedItr.remove();
}
}
}
【问题讨论】:
-
hasNext()为真当且仅当对next()的后续调用将成功。 -
这是否意味着即使这个列表中还剩下一项,它也会返回true?例如。 [1,2,3] 即使在最后一项 3 处它也会返回 true 吗?
-
你觉得呢,
next()会给你最后一个元素吗?