ArrayList
コレクションの番号が0〜10であるかどうかを確認する必要があります。 Iterator
を使用して、私はその中のすべての偶数を印刷しなければならず、ArrayList
から奇数を取り除く必要があります。add(Object o)、remove(Object o)などのコレクションメソッドが、削除または更新するイテレーション内で動作しないのはなぜですか?
package hemantdhanuka;
import java.util.*;
public class Iteratorr {
public static void main(String [] args) {
ArrayList v = new ArrayList();
for(int i = 0; i <= 10; i++) {
v.add (i);
}
System.err.println (v);
Iterator i = v.iterator();
/*while (i.hasNext()) {
Integer a = (Integer) i.next();
if (i % 2 == 0) {
System.out.println (i);
} else {
i.remove();
}
}
System.out.println (v);
*/
while(i.hasNext()) {
Integer a = (Integer) i.next();
if (a % 2 == 0) {
System.out.println (a);
} else {
v.remove (a);
}
}
System.out.println (v);
}
}
私が知っているが、コードが非についてコードコメント何正常に動作しますが、コメント?奇数をArrayList
から削除するためにArrayList#remove(Obj o)
を使用しようとすると、機能しません。 WHY
「動作していません」は有効な問題文ではありません。これは何かを意味するかもしれません。コンパイルしませんか?ランタイム例外?予期しない動作?できるだけ具体的にする。 – tnw
'Iterator'については、ドキュメントをよく読んでください。'このイテレータによって返された最後の要素を基になるコレクションから削除します(オプションの操作)。このメソッドは、next()の呼び出しごとに1回だけ呼び出すことができます。このメソッドを呼び出す以外の方法で反復処理が進行している間に、基礎となるコレクションが変更された場合、反復子の動作は不明です。したがって、 'Iterator'を使うと、リスト上で' remove() 'を呼び出すのではなく、常に' Iterator'の 'remove()'メソッドを使います。これは不特定の動作を引き起こします。 –