Javaでリストから配列へ、配列からリストへ変換する方法

こんにちは、さるまりんです。

タイトル通り、リストから配列へ、配列からリストへの変換です。

全部リストでやってますという状況ならこんなことすることもないですが、まあ、そうでもなく何気に機会があると思うのでメモしておきます。

リストから配列へ

まずはリスト(List)から配列(Array)へです。

これを行うにはListのtoArray()メソッドを利用します。

クラス名[] array = 変換するリスト.toArray(new クラス名[変換するリスト.size()]);

例です。

Stringクラスのオブジェクトを含むリストをStringクラスの配列に変換しています。

List<String> list  =new ArrayList<String>();
		
list.add("は");
list.add("る");
list.add("が");
list.add("き");
list.add("た");
		
String[] array = list.toArray(new String[list.size()]);
		
System.out.println("array = " + Arrays.toString(array));

このプログラムを実行すると

array = [は, る, が, き, た]

と出力されます。

Arrays.toString()は渡された配列を文字列表現にしてくれる便利メソッドです。

配列からリストへ

今度は逆の配列(Array)からリスト(List)への変換です。

これを行うにはArrays.asList()メソッドを利用します。

List<クラス名> list = Arrays.asList(変換する配列);

例です。

リストから配列への例のプログラムの続きで、配列をリストに戻してみます。

List<String> newList = Arrays.asList(array);

System.out.println("newList = " + newList.toString());

この部分を実行すると

newList = [は, る, が, き, た]

と出力されます。

シンプルですね。リストに戻りました。

注意点

配列からリストに戻したnewListに文字列”よ”を追加して、「はるがきたよ」にしようと次のようにnewListadd()メソッドを呼び出します。

newList.add("よ");

これ

Exception in thread "main" java.lang.UnsupportedOperationException

のエラーになるんです。Arrays.asList()で作成したリストは変更できないようになっています。

では、どうするか?

「変更できないリストの要素を全て含む新しいリストを作る」です。

List<String> newNewList = new ArrayList<String>(newList);

newNewList.add("よ");

System.out.println("newNewList = " + newNewList.toString());

これを実行すると

newNewList = [は, る, が, き, た, よ]

となります。

newListは要素の追加ができませんでしたが、newNewListはできるようになっています。

読んでくださってありがとうございました。

それではまた!