Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで配列をArrayListに変換する3つの方法!サンプルコード付きで解説

はじめに

Javaでは、固定長の配列を、要素の追加・削除が自由に行えるArrayListに変換したい場面がよくあります。本記事では、代表的な3つの変換方法を、実際に動くサンプルコードと実行結果付きで解説します。

  • add()メソッドで各要素を追加する
  • Arrays.asList()メソッドを使う
  • Collections.addAll()メソッドを使う

記事の後半では、Java 8以降で利用できるStream APIを使った応用的な変換方法も紹介します。


方法1:add()メソッドで各要素を追加する

ArrayListクラスのadd()メソッドは、引数に渡した要素をリストの末尾に追加します。ループ処理と組み合わせれば、配列の全要素を1つずつArrayListへ格納できます。最も基本的なやり方で、処理の流れが把握しやすいのが特徴です。

変換の手順

  1. 文字列配列を用意する
  2. 空のArrayListオブジェクトを生成する
  3. for文で配列の各要素をArrayListに追加する
  4. ArrayListの内容を出力して確認する

サンプルコード

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};

        // 空のArrayListを生成
        ArrayList<String> arrayList = new ArrayList<String>();

        // 配列の各要素を順に追加
        for(int i = 0; i < stringArray.length; i++) {
            arrayList.add(stringArray[i]);
        }

        // 内容の出力
        System.out.println("ArrayListの内容:");
        Iterator<String> it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

実行結果

ArrayListの内容:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

方法2:Arrays.asList()メソッドを使う

java.util.Arraysクラスの静的メソッドasList()は、配列を引数として受け取り、その配列を元にしたListオブジェクトを返します。ただし、戻り値のリストは固定サイズのため、要素の追加や削除はできません。そこで、取得したListをArrayListのコンストラクタに渡して新しいArrayListを生成するのが定石です。

変換の手順

  1. 変換対象の配列を用意する
  2. asList()に配列を渡し、Listオブジェクトを取得する
  3. 取得したListを引数に、ArrayListをインスタンス化する
  4. ArrayListの内容を出力する

サンプルコード

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

public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};

        // 配列からListを取得
        List<String> list = Arrays.asList(stringArray);

        // Listを渡してArrayListを生成
        ArrayList<String> arrayList = new ArrayList<String>(list);

        // 内容の出力
        System.out.println("ArrayListの内容:");
        Iterator<String> it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

実行結果

ArrayListの内容:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

方法3:Collections.addAll()メソッドを使う

java.util.CollectionsクラスのaddAll()メソッドは、第1引数に追加先のコレクション、第2引数に追加する要素(配列も可)を指定すると、それらをまとめてコレクションへ追加します。たった1行で配列の全要素をArrayListに取り込めるため、コードを簡潔に書きたい場合に便利です。

変換の手順

  1. 配列を用意する
  2. 空のArrayListオブジェクトを生成する
  3. Collections.addAll()にArrayListと配列を渡して呼び出す
  4. ArrayListの内容を出力する

サンプルコード

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};

        // 空のArrayListを生成
        ArrayList<String> arrayList = new ArrayList<String>();

        // 1行で配列の全要素を追加
        Collections.addAll(arrayList, stringArray);

        // 内容の出力
        System.out.println("ArrayListの内容:");
        Iterator<String> it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

実行結果

ArrayListの内容:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

応用:Stream APIで変換する(Java 8以降)

Java 8以降では、Stream APIを使ってより柔軟に変換することもできます。フィルタリングや並べ替えなどの処理を組み合わせたい場合に特に有用です。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;

public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};

        // Stream APIでArrayListへ変換
        ArrayList<String> arrayList = Arrays.stream(stringArray)
                .collect(Collectors.toCollection(ArrayList::new));

        System.out.println("ArrayListの内容:" + arrayList);
    }
}

実行結果

ArrayListの内容:[JavaFX, Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala]

まとめ:使い分けのポイント

  • add()メソッド:基本の方法。初心者の学習や、追加時に個別の処理を挟みたい場合に向いています。
  • Arrays.asList():記述がシンプル。ただし戻り値は固定サイズなので、ArrayListで包むのを忘れないようにしましょう。
  • Collections.addAll():1行で完結する最短記述。既存のArrayListに配列の要素を追記する際にも使えます。
  • Stream API:Java 8以降なら選択肢に。変換しながら絞り込みや加工を行いたい場合に威力を発揮します。

プロジェクトの要件や使用しているJavaのバージョンに応じて、最適な方法を選択してください。

  1. Javaで文字列をchar配列に変換する方法!toCharArray()メソッドの使い方を解説

    JavaにはtoCharArray()メソッドという便利な機能が用意されており、これを使うと文字列(String)をchar型の配列(char配列)に簡単に変換できます。このメソッドを活用すれば、文字列の中の1文字ずつを配列の要素として操作できるようになります。空白・数字・英字・記号なども、すべてそのままchar配列に格納されます。 なぜ文字列をchar配列に変換するのか プログラミングをしていると、Javaの文字列をchar配列に変換したくなる場面があります。たとえば、生徒の成績リストを管理するアプリを作っているとしましょう。成績が「ABCAAAC」のような1つの文字列として保存されてい

  2. 【Android】配列をArrayListに変換する方法をサンプルコード付きで解説

    このチュートリアルでは、Androidアプリ開発において配列(Array)をArrayListに変換する方法を、実際のサンプルコードとともにわかりやすく解説します。 配列からArrayListへの変換の基本 Javaでは、Arrays.asList()メソッドを使うことで、配列をリスト形式に変換できます。さらに、その結果をArrayListのコンストラクタに渡すことで、要素の追加や削除が自由に行える本格的なArrayListとして扱えます。 String[] array = new String[]{ANDROID, JSP, JAVA, STRUTS, HADOOP, JSF}; Arra