[Java] Arrays.asList注意点
想定してなかったエラーが出たのでメモしておきます。
配列をListにしてくれる便利な機能がArrays.asListです。
どうも配列は扱いづらくて、Listを多用しますが、場合によっては配列で処理しなければいけない場面もあります。
配列に追加しようとすると、配列をコピーして転記しなければいけないので面倒ですが、Listなら簡単です。いくらでも追加削除できます。
というわけでasListを使用するわけですが、
String[] arr = new String[2]; arr[0] = "値1"; arr[1] = "値2"; List list = Arrays.asList(arr);
と記述すると、エラーにはなりません。
ですが、このlistに、値を追加しようとするとエラーになります。
list.add("値3");
→java.lang.UnsupportedOperationException
なんで??ってなります。
このArrays.asListは固定サイズのリストを返すようです。結局配列と同じ。
なので、このlistは見た目はListインタフェースのオブジェクトですが、追加も削除も許されないという使えないlistになってしまいます。
ですが、意外と解決するのは簡単で、
List list = new ArrayList(Arrays.asList(arr));
このようにArrayListで囲むだけで通常のListになります。
気づかないといつまでもなんで???となる現象なので、覚えておくとよいと思います。
== ランキングに参加しています。ぜひクリックお願いします ==
16進数の1桁目を取得する [Excel] セルに乱数をセットする簡単な方法