iteratorに関するkiyo_hikoのブックマーク (2)
-
次のコードのように反復中にそのコレクションを削除しようとすると、ConcurrentModificationExceptionが発生してしまいます。 Set<Integer> set = new HashSet<Integer>(); for (int i = 0 ; i < 10 ; i++) { set.add(i); } // このループで例外発生 for (Integer currValue : set) { if (currValue % 2 == 0) { set.remove(currValue); } } for (Integer currValue : set) { System.out.println(currValue + " "); } これを回避するために、反復中に削除せず、削除対象をまず保持しておき、その後でまとめて削除するという方法です。 Set<Intege
-
Iteratorインタフェースはコレクションの要素を先頭から1つづつ、シーケンシャルにアクセスするためのインタフェースです。GoFのデザインパターンのイテレータパターンに対応しており、その特徴は コレクションの内部表現を公開せずに、要素にアクセスできる ことにあります。このため、Iteratorインタフェースをインプリメントしたクラスやその要素数、要素の保持方法などによらずに統一したインタフェースで要素にアクセスすることができます。 Iteratorインタフェースなので、そのまま生成することはできません。生成にはCollectionインタフェースのiteratorメソッドを使用します。 CollectionインタフェースはListインタフェースやSetインタフェースのスーパーインタフェースなので、これらのインタフェースでも使用することができます。 コレクションのシーケンシャルアクセス It
-
1