本文へスキップ
BecomeCoder

Javaオブジェクト指向コース · 第6章 コレクション ― たくさんのデータをまとめて扱う · レッスン25

List.of ― 変更しない前提のリスト

ブラウザで完結

導入

「曜日の一覧」のように 絶対に変更されたくないリスト を作りたいとき、ArrayList だと、うっかり addremove されて中身が変わってしまう危険があります。そんなときに便利なのが List.of です。

説明

List.of(要素, 要素, ...) は、指定した要素を持つ 読み取り専用のリスト をその場で作れます。

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> days = List.of("月", "火", "水", "木", "金");

        System.out.println(days.size());
        for (String day : days) {
            System.out.println(day);
        }
    }
}

new ArrayList<>() を作って何度も add する手間なく、1行でリストを作れます。size()get()・拡張forでの走査は、ArrayList と同じように使えます。本物のJavaでは、List.of で作ったリストに add() しようとすると UnsupportedOperationException が発生し、変更をブロックしてくれます。「これは読み取り専用のデータだ」という意図を伝えるために使いましょう。

やってみよう

下のエディタで List.of の中身を変えて実行し、ArrayList と同じ感覚で読み取れることを確認しましょう。

演習

List<String> colorsList.of で作り、"赤""青""黄" を要素にしてください。size() の結果と、get(2)(3番目の要素)の結果を表示してください。

ヒント1を見る

List<String> colors = List.of("赤", "青", "黄"); と書きます。

ヒント2を見る

System.out.println(colors.size()); のあと System.out.println(colors.get(2));(0始まりなので get(2) は3番目の要素です)。

実際に動かしてみよう

下のエディタにJavaを書いて「実行」を押すと、学習用シミュレータが System.out.println の出力を表示します(本物のJVMではなく、教材の範囲を再現した軽量エンジンです)。クラス・継承・コレクションなども動きます。Scanner で入力を読む例は「標準入力」欄に値を入れてください。本文の例を書き換えて動かしてみましょう(Stream・ラムダ・スレッド・ファイル入出力など一部の機能は対象外です)。

Java — ブラウザ内で実行(学習用シミュレータ)

Javaの教材サブセットを動かす学習用シミュレータを読み込みます(本物のJVMではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。