【サンプルコード付き】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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する