【Java】toArrayを使ってリスト(List)を配列(Array)に変換する!
リスト(List)を配列(Array)に変換する場合にはListクラスのtoArrayメソッドを使用します。
ListクラスのtoArrayメソッドは、リストに格納した要素を配列に変換します。
そのため、リストに格納していた要素を配列として扱いたい場合に便利です。
今回はListクラスのtoArrayメソッドを使って以下の場合でリスト(List)を配列(Array)に変換していきます。
⚫︎ リストから既に要素が入っている配列へ変換する場合
⚫︎ リストからサイズ0の配列へ変換する場合
⚫︎ リストの要素数を数えて配列に変換する場合
⚫︎ リストの要素数が配列のサイズを超えて変換する場合
目次
toArrayメソッドとは
ListクラスのtoArrayメソッドは、Listから配列に変換するメソッドとなります。
toArrayメソッドの書き方
toArrayメソッドの構文は下記となります。
1 |
配列にしたいList.toArray(変換後の配列); |
パラメータ
⚫︎ 変換後の配列:
リストから配列に変換したい配列名を指定する
toArrayの()に変換後の配列を指定することでtoArrayの前に指定したリストを配列へ変換することができます。
リストを配列に変換するサンプルコード
リストを配列に変換するサンプルコードを紹介します。
リストから既に要素が入っている配列へ変換する場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// リストを配列に変換する import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //リストを作成 List<String> list1 = new ArrayList<String>(); //リストに要素を追加 list1.add("新潟県"); list1.add("富山県"); list1.add("石川県"); list1.add("福井県"); // リストを配列に変換する System.out.println( "パラメータにすでに値が入っている配列を使った場合"); String[] array1 = {"AAA", "BBB", "CCC", "DDD", "EEE", "FFF"}; array1 = list1.toArray(array1); System.out.println(Arrays.toString(array1)); } } |
出力結果
パラメータにすでに値が入っている配列を使った場合
[新潟県, 富山県, 石川県, 福井県, null, FFF]
リストの要素数がパラメータの配列のサイズ以下の場合、パラメータの配列に要素を格納したものを返しています。
上書きされなかった要素の先頭の要素には、nullが代入されています。
リストからサイズ0の配列へ変換する場合
パラメータにサイズ0の配列を使うにはtoArrayメソッドの引数に「new String[0]」を指定します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// リストを配列に変換する import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //リストを作成 List<String> list2 = new ArrayList<String>(); //リストに要素を追加 list2.add("新潟県"); list2.add("富山県"); list2.add("石川県"); list2.add("福井県"); // リストを配列に変換する System.out.println( "パラメータにサイズ0の配列を使った場合"); String[] array2 = {"AAA", "BBB", "CCC", "DDD", "EEE", "FFF"}; array2 = list2.toArray(new String[0]); System.out.println(Arrays.toString(array2)); } } |
出力結果
パラメータにサイズ0の配列を使った場合
[新潟県, 富山県, 石川県, 福井県]
配列のサイズが0である場合は新たに配列を作成し、そこにリストの要素を格納していきます。
要素数を数えて配列に変換する場合
size()メソッドを使うことで、要素数を数えて配列に変換することもできます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// リストを配列に変換する import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //リストを作成 List<String> list3 = new ArrayList<String>(); //リストに要素を追加 list3.add("新潟県"); list3.add("富山県"); list3.add("石川県"); list3.add("福井県"); // リストを配列に変換する System.out.println( "パラメータにサイズ0の配列を使った場合"); String[] str = new String[list3.size()]; String[] array3 = list3.toArray(str); System.out.println(Arrays.toString(array3)); } } |
出力結果
パラメータにサイズ0の配列を使った場合
[新潟県, 富山県, 石川県, 福井県]
リストの要素数が配列のサイズを超える場合
変換したいリストの要素数が配列のサイズを超えた場合どうなるのかを見てみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// リストを配列に変換する import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //リストを作成 List<String> list4 = new ArrayList<String>(); //リストに要素を追加 list4.add("新潟県"); list4.add("富山県"); list4.add("石川県"); list4.add("福井県"); // リストを配列に変換する System.out.println( "リストの要素数が配列のサイズを超えた場合"); String[] array4 = {"AAA", "BBB"}; array4 = list4.toArray(array4); System.out.println(Arrays.toString(array4)); } } |
出力結果
リストの要素数が配列のサイズを超えた場合
[新潟県, 富山県, 石川県, 福井県]
こちらも同様に新しい配列を作成して、そこにリストの要素を格納していきます。
今回のポイント
toArrayでリストを配列に変換
リストを配列に変換するにはListクラスのtoArrayメソッドを使用する
⚫︎ ListクラスのtoArrayメソッドでリストを配列に変換する
⚫︎ toArrayメソッドパラメータには、変換したい配列を指定する
⚫︎ リストの要素数がパラメータの配列のサイズ以下の場合、パラメータの配列に要素を格納し、上書きされなかった要素のうち先頭の要素には、「null」が代入される
⚫︎ リストの要素数がパラメータの配列のサイズを超える場合、新たに配列を作成し、それにリストの全要素を格納する
(サンプルコードでは、パラメータにリストよりも要素数の多い配列を使っており、元のリストの要素数が「4」なので、配列のインデックスが「4」の部分は「null」であり、残りの部分はそのまま)
⚫︎ 配列のサイズが「0」の場合は、リストの要素数の新しい配列が作成され、そこにリストの全要素を格納する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。