配列→コレクション変換(Arrays.asList 等) — API 互換
Javaでは「配列」と「コレクション(List, Set, Mapなど)」がよく登場します。
配列は固定長・基本的な構造、コレクションは柔軟で便利なAPIが豊富。
両者を相互に変換できると、ライブラリやフレームワークとの互換性が高まります。
基本の変換方法
Arrays.asList
import java.util.*;
String[] arr = {"A", "B", "C"};
List<String> list = Arrays.asList(arr);
System.out.println(list); // [A, B, C]
Java- 特徴: 配列を「固定サイズのList」に変換。
- 注意: 要素の追加・削除はできない(UnsupportedOperationException)。
- 変更は反映: 配列を変更するとListにも反映される。
arr[0] = "X";
System.out.println(list); // [X, B, C]
Java可変Listにしたい場合
String[] arr = {"A", "B", "C"};
List<String> list = new ArrayList<>(Arrays.asList(arr));
list.add("D"); // OK
System.out.println(list); // [A, B, C, D]
Java👉 Arrays.asList → new ArrayList で「自由に追加・削除できるList」に変換。
他の変換方法
Stream API
String[] arr = {"A", "B", "C"};
List<String> list = Arrays.stream(arr).toList(); // Java 16+
System.out.println(list); // [A, B, C]
Java- 特徴:
toList()は不変リストを返す。 - Java 8〜:
.collect(Collectors.toList())を使う。
List<String> list = Arrays.stream(arr)
.collect(Collectors.toList());
JavaSet に変換
String[] arr = {"A", "B", "A"};
Set<String> set = new HashSet<>(Arrays.asList(arr));
System.out.println(set); // [A, B]
Java👉 重複を排除したいときは Set に変換。
例題で練習
例題1: 配列からListに変換してソート
Integer[] nums = {5, 2, 9, 1};
List<Integer> list = new ArrayList<>(Arrays.asList(nums));
Collections.sort(list);
System.out.println(list); // [1, 2, 5, 9]
Java例題2: 配列からSetに変換して重複排除
String[] fruits = {"apple", "banana", "apple"};
Set<String> set = new HashSet<>(Arrays.asList(fruits));
System.out.println(set); // [banana, apple]
Java例題3: 配列からStreamでフィルタ
String[] arr = {"A", "BB", "CCC"};
List<String> list = Arrays.stream(arr)
.filter(s -> s.length() > 1)
.toList();
System.out.println(list); // [BB, CCC]
Javaテンプレート集
配列 → List(固定サイズ)
List<T> list = Arrays.asList(array);
Java配列 → List(可変サイズ)
List<T> list = new ArrayList<>(Arrays.asList(array));
Java配列 → Set
Set<T> set = new HashSet<>(Arrays.asList(array));
Java配列 → Stream → List
List<T> list = Arrays.stream(array).collect(Collectors.toList());
Java実務のコツと落とし穴
- Arrays.asList は固定サイズ: add/remove はできない。必要なら ArrayList に包む。
- 配列とListはリンクする: 配列を変更すると List に反映される。独立させたいなら新しいコレクションにコピー。
- Stream APIは柔軟: フィルタや変換を組み合わせて一気に処理できる。
- Set変換で重複排除: データクレンジングに便利。
まとめ
- 配列→コレクション変換は Arrays.asList が基本。
- 可変操作したいなら ArrayList に包む。
- Stream API でフィルタや変換も可能。
- Set に変換すれば重複排除。
👉 練習課題として「文字列配列を List に変換し、ソートしてから Set に変換」してみると、配列→コレクション変換の流れが体感できます。
