Java 配列からリストを作成する(addAll/asListメソッド)

Javaの配列からリストを作成するサンプルです。
CollectionsクラスのaddAllメソッドまたはArraysクラスのasListメソッドを使用します。

確認環境
・Java 8

目次

CollectionsクラスのaddAllメソッドを使用する

public static <T> boolean addAll(Collection<? super T> c,T... elements)
  • 配列からリストを作成します。
  • 1つめの引数にリストをセットし2つめの引数に配列をセットします。
  • リストを変更しても元の配列は変更されません。(ArraysクラスのasListメソッドとの違い)
  • リストに追加または削除を行うことが可能です。元の配列は変更されません。(ArraysクラスのasListメソッドとの違い)
  • 以下はJava8 API仕様のCollectionsクラスのaddAllメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#addAll-java.util.Collection-T...-

コード

CollectionsクラスのaddAllメソッドを使用するサンプルです。

package test1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
        // 配列
        String[] colors1 = {"赤","黄","青"};
        
        // リストを作成
        List<String> list1 = new ArrayList<>();
        
        // 配列からリストを作成
        Collections.addAll(list1, colors1);
        
        System.out.println(list1); // [赤, 黄, 青]
    }
}

9行目は、配列です。
12行目は、リストです。中身は空です。
15行目は、CollectionsクラスのaddAllメソッドで配列の値をリストにセットしています。
17行目は、リストの値が表示されています。

 

リストを変更した場合

addAllメソッドで配列からリストを作成した後、リストの値を変更した場合です。
配列の値は変更されません。

package test1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;

public class Test1 {
    public static void main(String[] args) {
        // 配列
        String[] colors1 = {"赤","黄","青"};
        
        // リストを作成
        List<String> list1 = new ArrayList<>();
        
        // 配列からリストを作成
        Collections.addAll(list1, colors1);
        
        //リストを変更
        list1.set(1, "オレンジ");
        
        //リストの値
        System.out.println(list1);// [赤, オレンジ, 青]
        
        //配列の値 (変更されない)
        System.out.println
            (Arrays.toString(colors1));// [赤, 黄, 青]
    }
}

16行目は、CollectionsクラスのaddAllメソッドで配列からリストを作成しています。
19行目は、リストを変更しています。
22行目はリストの値で、25行目は配列の値です。
26行目のtoStringメソッドは、配列を引数にして、文字列を返します。

 

リストへ追加/削除した場合

addAllメソッドで配列からリストを作成した後、リストに対して追加と削除した場合です。
配列の値は変更されません。

package test1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;

public class Test1 {
    public static void main(String[] args) {
        // 配列
        String[] colors1 = {"赤","黄","青"};
        
        // リストを作成
        List<String> list1 = new ArrayList<>();
        
        // 配列からリストを作成
        Collections.addAll(list1, colors1);
        
        //リストに要素を追加
        list1.add("オレンジ");
        
        //リストの要素を削除
        list1.remove(1);
        
        //リストの値
        System.out.println(list1);// [赤, 青, オレンジ]
        
        //配列の値 (変更されない)
        System.out.println
            (Arrays.toString(colors1));// [赤, 黄, 青]
    }
}

16行目は、addAllメソッドで配列からリストを作成しています。
19行目は、リストに要素を追加しています。
22行目は、リストから要素を削除しています。
25,28行目はそれぞれリストと配列の値です。
toStringメソッドは、配列を引数にして、文字列を返します。

 

ArraysクラスのasListメソッドを使用する

public static <T> List<T> asList(T... a)
  • 引数の配列をリストにして返します。
  • リストを変更すると元の配列も変更されます。(CollectionsクラスのaddAllメソッドとの違い)
  • リストに追加または削除を行うと例外が発生します。(CollectionsクラスのaddAllメソッドとの違い)
  • 元の配列に影響を与えない新規のリストを作成する場合は、CollectionsクラスのaddAllメソッドを使用します。
  • 以下はJava8 API仕様のArraysクラスのasListメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/util/Arrays.html#asList-T...-

コード

asListメソッドのサンプルです。

package test1;
import java.util.Arrays;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
        // 配列 
        String[] colors1 = {"赤","黄","青"};
        
        // 配列からリストを作成
        List<String> list1 = Arrays.asList(colors1);
        
        System.out.println(list1); // [赤, 黄, 青]
    }
}

11行目は、ArraysクラスのasListメソッドで配列の値をリストにセットしています。
13行目は、リストの値が表示されています。

 

リストを変更した場合

asListメソッドでリストを作成した後、リストを変更すると元の配列も変更されます。

package test1;
import java.util.Arrays;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
        // 配列
        String[] colors1 = {"赤","黄","青"};
        
        // 配列からリストを作成
        List<String> list1 = Arrays.asList(colors1);
        
        // リストを変更
        list1.set(1, "オレンジ");      

        // リストの値
        System.out.println(list1);//[赤, オレンジ, 青]

        // 配列の値
        System.out.println(Arrays.toString(colors1));
        //[赤, オレンジ, 青]
    }
}

11行目は、asListメソッドで配列からリストを作成しています。
14行目は、リストの値を変更しています。
17行目は、リストの値です。
20行目は、配列の値です。リストの値と同じになっています。
toStringメソッドは、配列を引数にして、文字列を返します。

 

リストへ追加/削除した場合

asListメソッドでリストを作成した後、リストに追加または削除を行うと例外が発生します。

package test1;
import java.util.Arrays;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
        // 配列
        String[] colors1 = {"赤","黄","青"};
        
        // 配列からリストを作成
        List<String> list1 = Arrays.asList(colors1);
        
        // リストに要素を追加
//      list1.add("緑");
        
        // リストから要素を削除
//      list1.remove(1);
    }
}

11行目は、asListメソッドで配列からリストを作成しています。
14行目は、リストに要素を追加しています。実行するとUnsupportedOperationException例外が発生します。
17行目は、リストから要素を削除しています。実行するとUnsupportedOperationException例外が発生します。

関連の記事

Java 配列の仕組みと使い方のサンプル
Java ArrayListの使い方のサンプル
Java リストから配列を作成する(toArrayメソッド)

△上に戻る