プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[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になります。

気づかないといつまでもなんで???となる現象なので、覚えておくとよいと思います。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください