【サンプルコード付き】Javaのリストと配列を変換する方法

javaの配列とリストの変換
  • このエントリーをはてなブックマークに追加
  • Pocket

リストと配列は似て非なる概念だ。リストから配列に変換したり、配列からリストに変換したいことはあるだろう。

このページではリストと配列の変換方法についてお伝えした。

リストから配列に変換する方法

リスト(List)から配列に変換を行うためには、変換のために準備されたメソッドがあるので、その使い方を理解しておく必要がある。そのメソッドとはtoArrayである。Listインタフェースが実装されたクラスであればこのメソッドを使うことができる。ここでは、Listインタフェースが実装されたクラスのオブジェクトのことをリストと呼ぶ。

ArrayListクラスやLinkedArrayクラスなどは、Listインタフェースが実装された代表的なクラスである。

書き方の基本は簡単だ。

配列変数名[] = リスト.toArray();

メソッド

toArray()

戻り値の型

public Object[]

内容

正しい順序(最初から最後の要素に向かって)でリストの中のすべての要素を含む配列を戻す。

戻される配列は,このリストによるどんな参照も保持されないという意味で安全です。(言い換えれば,このメソッドは新たな配列を確保します。)呼び出し側は,戻された配列を自由に変更可能です。

このメソッドは,配列ベースとCollectionベースAPI間のブリッジになります。

 

戻り値:正しい順序でリストの中のすべての要素を含む配列を戻す。

参照:Arrays.asList(Object[])

では、実際のコードを見てみよう。

サンプルプログラム

このプログラムがtoArrayメソッドを使ったサンプルプログラムだ。Listインタフェースを実装したArrayListクラスのオブジェクトに要素を追加し、その後オブジェクトに追加された要素をすべて配列に変換している。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] ArrayListクラスのオブジェクトlistを生成する。
  • [2]-[4] 文字列「りんご」「みかん」「もも」をlistに追加する。
  • [5] オブジェクトlistのtoArrayメソッドを呼び出して、リストを配列objectsに変換する。
  • [6][7] 配列:objectsのすべての要素を表示する

配列をリストに変換する方法

配列からリスト(List)に変換を行うためにも、準備されたメソッドがある。この変換のためには、クラスメソッドjava.util.Arrays.asList()が準備されている。配列であれば、このメソッドを使うことができる。

書き方の基本は簡単だ。

リスト = Arrays.asList(配列変数名);

このメソッドの詳細も見ておこう。

メソッド

Arrays.asList(T... a)

メソッドの内容を次に示すが、注意点がある。それは、リストが固定長であることだ。つまり、配列と同じように追加できない。その代わり、書き込んだ値が配列にも反映される。

戻り値の型

public static <T> List<T>

内容

指定された配列が背後にある固定長のリストを戻す。(戻されたリストへの変更は、その配列に書き込まれる)

このメソッドは、Collection.toArray()との組み合わせで配列ベースとコレクションベースAPIのブリッジとして働く。

戻されるリストは、シリアル化可能でRandomAccessが実装されている。

 

このメソッドは、いくつかの要素を初期値として格納するために固定長のリストを生成する便利な方法を提供する。

     List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");

 

型引数:

T – 配列の中のオブジェクトのクラス

引数:

a – リストの背後にある配列

戻り値:

指定された配列のリストビュー

では、実際のコードを見てみよう。

サンプルプログラム

このプログラムがArrays.asList()メソッドを使ったサンプルプログラムだ。要素を初期値として代入した配列からリストに変換を行っている。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] 文字列の配列stringsを宣言し、初期値を代入する。
  • [2] Arrays.asListクラスメソッドを使って、配列をリストに変換する。
  • [3]-[4] リストの要素をすべて表示する

変換したリストの注意点

前のセクションで配列をリストに変換した時の注意点として次の二つの点をあげた。

  • リストが固定長であり、配列と同じように追加できない。
  • 書き込んだ値が配列にも反映される。

この点を実際のコードから確認しておこう。リストに要素(「かき」)を次のように追加する。

List list = Arrays.asList(strings);

list.add("かき");

このコードが実行されると、例外が発生する。

この例外を回避するためには、リストを追加可能な別のクラスに変換する必要がある。例えばArrayListクラスに変換することができる。

List<String> arrayList = new ArrayList<String>(list);

サンプルプログラム

このプログラムは、リストを追加可能な別のクラス(ArrayList)のオブジェクトに変換する方法を示している。また、リストの値を変更すると配列にその変更が反映されるが、ArrayListのオブジェクトには反映されないことを示している。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] 文字列の配列stringsを宣言し、初期値を代入する。
  • [2] Arrays.asListクラスメソッドを使って、配列をリストに変換する。
  • [3] リストをArrayListクラスのオブジェクトに変換する。
  • [4] リストの最初の要素を「いちご」に置換する。
  • [5] オブジェクトarrayListに「かき」を追加する。
  • [6]-[7] stringsの要素をすべて表示する
  • [8]-[9] arrayListの要素をすべて表示する

まとめ

このページではJavaの配列とリストの変換についてまとめてお伝えをしてきた。

サンプルコードもつけているため、参考にしていただければ幸いだ。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*

ゼロからエンジニアを目指す方へ
短期間でエンジニアになる方法

必要な勉強や技術の最新動向、本当に使えるIT資格、学習に役立つ国からの奨励金などの情報を無料でお届け

資料を見てみる