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

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();
    }
}