JavaのIterator#removeでUnsupportedOperationExceptionが発生したら

高瀬 裕介 385views 更新:2013年10月24日

JavaでArrays.asListを使うなどして固定長のListをつくると、Iteratorを使った要素の削除でこけます。

下記のようなコードは実行すると「UnsupportedOperationException」が発生します。

List list = Arrays.asList(array);
for(Iterator it = list.iterator(); it.hasNext()){
    if(something) {
      it.remove();
    }
}

LinkedListクラスに変換してやるとうまくいきます。

 

List list = new LinkedList(Arrays.asList(array));
for(Iterator it = list.iterator(); it.hasNext()){
    if(something) {
      it.remove();
    }
}

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません