Arrays.asListとList.ofの違い
JavaのArrays.asList と List.of は、リストの初期化という点では同じような役割を果たしますが、完全に置き換えることはできないです。
以下にそれぞれの違いを説明します。
Arrays.asList
- 可変長配列を受け取ってリストを作成する。
- 作成されたリストは固定サイズで、要素の追加や削除はできないが、既存の要素を変更することは可能です。
- 例: Arrays.asList("a", "b", "c") はリスト ["a", "b", "c"] を返します。
List.of
- Java 9以降で利用可能。
- 不変リストを作成し、作成されたリストは要素の追加、削除、変更ができない。
- 例: List.of("a", "b", "c") は不変リスト ["a", "b", "c"] を返します。
置き換えが可能な場合
- リストを作成した後に要素を変更しない場合、Arrays.asList を List.of に置き換えることができます。
// Arrays.asList List<String> list1 = Arrays.asList("a", "b", "c"); // List.of List<String> list2 = List.of("a", "b", "c");
置き換えが難しい場合
- リストの要素を後から変更したい場合は、Arrays.asList を使用する必要があります。
List.of では要素の変更ができないためです。
List<String> list = Arrays.asList("a", "b", "c"); list.set(1, "d"); // これは可能
- もし不変リストを作成し、後から可変リストに変更したい場合は、次のように Arrays.asList から ArrayList に変換することができます。
List<String> list = new ArrayList<>(List.of("a", "b", "c")); list.add("d"); // これは可能
結論
上記のように Arrays.asList と List.of はリストの可変・不変という点で異なります。
リストの操作方法に応じて適切なメソッドを選択しましょう。