イテレータについて簡単な質問があります。
現在、2つのオブジェクトリストから重複しているアイテムを削除したいと思います。
私が今設定している方法は、2番目のリスト(最初のリストから削除する必要があるオブジェクトのリスト)にアイテムがある限り、マージを行うループが実行され続けるということです。
まだアイテムが残っているかどうかをチェックする機能を使ってい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();
}
}
}