1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java】Arrays.asList() と List.of() の違いと役割を解説

1
Posted at

Javaで「配列やListを簡単に作りたい」と思ったとき、よく登場するのが次の2つのメソッドです。

  • Arrays.asList()
  • List.of()

一見するとどちらも「Listを作るメソッド」に見えますが、性質や使いどころは大きく異なります
この記事では、Java初心者向けにそれぞれの役割と違い、正しい使い分けを解説します。


1. Arrays.asList() とは?

Arrays.asList() は、配列をListとして扱うためのメソッドです。

基本的な使い方

import java.util.Arrays;
import java.util.List;

public class Sample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("A", "B", "C");
        System.out.println(list);
    }
}

出力結果:

[A, B, C]

特徴

  • 配列を元にしたList
  • Listのサイズは 固定
  • 要素の 変更は可能
  • Java 5 から存在(古くから使われている)

注意点(重要)

要素の追加・削除はできない

List<String> list = Arrays.asList("A", "B", "C");

list.add("D");    // UnsupportedOperationException
list.remove(0);   // UnsupportedOperationException

配列とListが連動する

String[] array = {"A", "B", "C"};
List<String> list = Arrays.asList(array);

array[0] = "X";
System.out.println(list); // [X, B, C]

配列の変更がListにも影響する点は、初心者が非常にハマりやすいポイントです。


2. List.of() とは?

List.of() は、Java 9 から追加された新しいList生成メソッドです。

基本的な使い方

import java.util.List;

public class Sample {
    public static void main(String[] args) {
        List<String> list = List.of("A", "B", "C");
        System.out.println(list);
    }
}

特徴

  • 完全に変更不可(イミュータブル)
  • 要素の追加・削除・変更すべて不可
  • 配列との関連なし
  • Java 9 以降で使用可能

変更しようとすると…

List<String> list = List.of("A", "B", "C");

list.set(0, "X"); // UnsupportedOperationException

3. Arrays.asList() と List.of() の違いまとめ

項目 Arrays.asList() List.of()
Javaバージョン Java 5〜 Java 9〜
サイズ変更 不可 不可
要素変更 可能 不可
null要素 許可 NullPointerException
配列との連動 あり なし
主な用途 配列をListとして扱う 定数リスト・固定データ

4. よくある使い分け例

配列をListとして扱いたい場合

String[] data = {"A", "B", "C"};
List<String> list = Arrays.asList(data);

定数として安全に使いたい場合

List<String> roles = List.of("ADMIN", "USER", "GUEST");

要素を追加・削除したい場合(重要)

どちらもサイズ変更不可なので、次のようにします。

import java.util.ArrayList;
import java.util.List;

List<String> list = new ArrayList<>(List.of("A", "B", "C"));
list.add("D"); // OK

5. 初心者向け結論

  • Java 9以上を使っているなら、基本は List.of()
  • 配列をListとして扱う必要がある場合のみ Arrays.asList()
  • 要素を変更したい場合は ArrayList に変換する

6. まとめ

  • Arrays.asList() は「配列のラッパー」
  • List.of() は「安全な変更不可List」
  • 両者は似ているが 設計思想がまったく違う
  • 違いを理解すると、例外やバグを防げる

どちらを使うか悩んだら 「変更できるか?できないか?」を常に意識するのがおすすめです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?