スライドショースライドショー

【Java入門】List⇔配列の相互変換は”toArray”と”asList”でOK!

こんにちは!エンジニアの中沢です。

JavaでListから配列(Array)に変換したり、配列からListに変換したい

と思ったことはありませんか? 実はそのような変換を一発でできる「toArrayメソッド」と「asListメソッド」が用意されています! 今回は、Listと配列を相互に変換する方法解説します!

この記事では、

  • Listを配列に変換したい
  • 配列をListに変換したい
  • toArrayメソッドの使い方を知りたい
  • asListメソッドはどうやって使うの?

という基本的な内容から、

  • toArrayメソッドの引数はどうしたらいいの?
  • asListメソッドで作成したリストのサイズを変更するには?

などの応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、Listと配列を相互に変換する方法をわかりやすく解説します!

Listから配列(Array)に変換する方法

まずは、Listから配列(Array)に変換する方法を解説します!

toArrayメソッドの使い方

ここでは、toArrayメソッドの使い方を解説します。Listから配列に変換するには、「java.util.Collection.toArrayメソッド」を使います。toArrayメソッドの使い方を覚えるために、次のプログラムで確認してみましょう。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();
        list.add("さ");
        list.add("む");
        list.add("ら");
        list.add("い");

        String[] array = list.toArray(new String[list.size()]);
        
        System.out.println("List = " + list);
        System.out.println("配列 = " + Arrays.toString(array));
    }
}
[実行結果]
List = [さ, む, ら, い]
配列 = [さ, む, ら, い]

このようにtoArrayメソッドを使うことで、Listから配列に変換することができました! ここでは配列のデータを表示するためにtoStringメソッドを使っています。

引数の注意点

toArrayメソッドの引数には配列のサイズを指定しますが、「toArray(new String[0])」と「toArray(new String[list.size()])」のどちらがいいでしょうか?

どちらで書いても動作はしますが、「toArray(new String[0])」の場合はサイズ”0”の配列を作った後にすぐ削除して、新しくListと同じサイズの配列を作り直すため処理が遅くなります!

そのため、toArrayメソッドの引数はListと同じサイズで配列を作るために「toArray(new String[list.size()])」と書くようにしましょう!

配列(Array)からListに変換する方法

ここでは配列からListに変換する方法を解説します!

Arrays.asListメソッドの使い方

配列からListに変換するには「java.util.Arrays.asListメソッド」を使います。asListメソッドの使い方を覚えるために、次のプログラムで確認してみましょう。

import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        String[] array = { "さ", "む", "ら", "い" };
        List<String> list = Arrays.asList(array);

        System.out.println("配列 = " + Arrays.toString(array));
        System.out.println("List = " + list);
    }
}
[実行結果]
配列 = [さ, む, ら, い]
List = [さ, む, ら, い]

このようにasListメソッドを使うことで、配列からListに変換することができました!

そのままではサイズが変更できないので注意!

asListメソッドは配列を簡単にListに変換することができて便利なメソッドですが、注意点があります! それは、asListメソッドが「固定サイズのList」を返すので、Listの要素を追加(add)したり削除(remove)することができなくなるということです!

もし、Listのサイズを変更しようとすると「UnsupportedOperationException」の例外が発生するので注意してください。ただし、これから解説する方法を使えばasListメソッドで変換したListのサイズ(要素数)を変更することができるのでぜひ確認してください!

asListメソッドで変換したListのサイズ(要素数)を変更する方法

ここでは、asListメソッドで変換したListのサイズ(要素数)を変更する方法を解説します。asListメソッドで変換したListは「固定サイズのList」なので、そのままではサイズ(要素数)を変えることができません。

「固定サイズのList」を「サイズを変更できるList」に変換する方法を次のプログラムで確認してみましょう。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        String[] array = { "さ", "む", "ら", "い" };
        List<String> list = Arrays.asList(array);

        // ここで要素を追加しようとすると、「UnsupportedOperationException」の例外が発生する。
        // list.add("塾");

        // 次のようにすれば要素の追加が可能になる。
        List<String> newList = new ArrayList<>(list);
        newList.add("塾");

        System.out.println("配列 = " + Arrays.toString(array));
        System.out.println("List = " + list);
        System.out.println("List = " + newList);
    }
}
[実行結果]
配列 = [さ, む, ら, い]
List = [さ, む, ら, い]
List = [さ, む, ら, い, 塾]

このように、新しく宣言したListのコンストラクタに「固定サイズのList」を指定することで、「サイズを変更できるList」に変換することができました!

Listと配列の違いとは

配列やListを扱っていて配列とListの違いがイマイチわからない

といったことはありませんか? 次の記事では、Listと配列の違いを詳しく解説しているのでぜひ確認してみてください!

【Java入門】配列とListの変換(宣言の違いや2次元Listも解説)
更新日 : 2017年8月24日

Listの使い方総ざらい

Listには今回解説した以外にも様々な使い方があります!Listの様々な使い方についてはこちらでまとめているので、ぜひ確認してください!

JavaのList型とは!?ArrayListの使い方を基礎の基礎から解説!
更新日 : 2019年4月23日

配列の使い方総ざらい

配列には今回解説した以外にも様々な使い方があります!配列の様々な使い方についてはこちらでまとめているので、ぜひ確認してください!

まとめ

いかがでしたか? 今回はListと配列の変換方法について解説しました。これでListと配列の変換方法がわからなかったり、asListメソッドで変換したListのサイズが変更できないといった悩みを解決することができました!

もし、List→配列、配列→Listの変換で「toArrayメソッド」や「asListメソッド」の使い方を忘れてしまったらこの記事を確認してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説