良い一日。
問題は、 Mapコレクションから要素を削除する方法です。別の問題を解決しようとしていますが、コレクションからの削除がどのような原理で発生するのか理解できず、先に進むことができません。考え方は、コレクションから同一の要素を削除することであり、比較は値によって行われます。レベル 8 の講義から、「イテレータ」はコレクションへのリンクのようなものであることがわかりました。そこで、そのようなリンクを 2 つ作成し、コレクション内の要素を比較して、このリンク (オブジェクト) iterator2 が参照している要素を削除することにしました。なぜ間違っているのか説明してください。自分のどこが間違っているのかを本当に理解したいのです。回答してくださった皆様、ありがとうございました。 コレクションからの削除を実装するための別のオプション
for (Iterator
> iterator1 = map.entrySet().iterator(); iterator1.hasNext();){ HashMap.Entry
pair1 = iterator1.next(); for (Iterator
> iterator2 = map.entrySet().iterator(); iterator2.hasNext();) { HashMap.Entry
pair2 = iterator2.next(); if(pair1.getValue().equals(pair2.getValue())){ map.remove(pair2.getKey()); } } }
Iterator
> iterator1 = map.entrySet().iterator(); while(iterator1.hasNext()){ Map.Entry
pair1 = iterator1.next(); Iterator
> iterator2 = map.entrySet().iterator(); while(iterator2.hasNext()){ Map.Entry
pair2 = iterator2.next(); if (pair1.getValue().equals(pair2.getValue())){ iterator2.remove(); } } }
GO TO FULL VERSION