2019年01月18日
JAVA ループ内でリストの要素を削除する
forループ内で該当する値を削除する(removeする)と下記が発生する。
(リストを削除しつつlistの要素をgetしょうとすると下記が発生する。)
「java.util.ConcurrentModificationException」
この場合、for文ではなくwhile文を利用する。
【Ex.】 valueの要素値が2の場合、その要素を削除する。
public static void main(String[] args) {
int ransu = 99;
ArrayList<Integer> value = new ArrayList<Integer>();
while(0 != ransu){
ransu = (int)(Math.random()*11);
System.out.println("0~10の値を出力:" + ransu);
value.add(ransu);
}
↑ まずは、0から10までの乱数を取得(※0が出たら乱数取得を終了)
■list.remove(Object o)メソッドを使う場合
while(value.remove((Integer)2)){}
■iterator(イテレータ)を使う場合
Iterator itr = value.iterator();
while(itr.hasNext()){
Integer i = (Integer)itr.next();
if(2 == i){
itr.remove();
}
※その他、後でまとめてremoveAllする方法でもよい。
(リストを削除しつつlistの要素をgetしょうとすると下記が発生する。)
「java.util.ConcurrentModificationException」
この場合、for文ではなくwhile文を利用する。
【Ex.】 valueの要素値が2の場合、その要素を削除する。
public static void main(String[] args) {
int ransu = 99;
ArrayList<
while(0 != ransu){
ransu = (int)(Math.random()*11);
System.out.println("0~10の値を出力:" + ransu);
value.add(ransu);
}
↑ まずは、0から10までの乱数を取得(※0が出たら乱数取得を終了)
■list.remove(Object o)メソッドを使う場合
while(value.remove((Integer)2)){}
■iterator(イテレータ)を使う場合
Iterator itr = value.iterator();
while(itr.hasNext()){
Integer i = (Integer)itr.next();
if(2 == i){
itr.remove();
}
※その他、後でまとめてremoveAllする方法でもよい。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/8482111
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック