【News】List入門:配列との違い・ArrayListの基本・nullの扱い方(前編)

こんにちは、バナナドリームです。

今回からは、Javaのコレクションの中でも使用頻度がとても高い「List(リスト)」について掘り下げていきます。

前編では「Listとは何か」「配列との違い」「nullの扱い方」という、List入門で最初につまずきやすいポイントをまとめて解説します。

Listとは?――「サイズが変えられる配列」みたいなもの

JavaにおけるListは、「順番がある要素の集まり」であり、同じデータ型の値を並べて保持できるという点では配列(array)と似ています。しかし、決定的な違いはその柔軟性です。

配列との違い①:サイズの変更が可能

配列は最初に決めた要素数を後から変えることができません。一方でListは、後から自由に要素を追加・削除できます。list.add(90); と書くだけでデータを追加できるのは大きなメリットです。

配列との違い②:操作が簡単&メソッドが豊富

Listには add()、remove()、contains()、size() など便利なメソッドが多数用意されています。これにより、処理の簡潔化や可読性の向上が期待できます。

Listの代表格「ArrayList」を覚えよう

JavaのListはインターフェースであり、実際に使う際には「ArrayList」や「LinkedList」といった具体的な実装クラスを使います。初心者にはまず ArrayList から覚えるのがベストです。

java

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        ArrayList<String> fruits = new ArrayList<>();

        fruits.add("りんご");

        fruits.add("バナナ");

        fruits.add("みかん");

        System.out.println(fruits);

    }

}

ポイントは以下の通りです。

・import java.util.ArrayList; が必要

・new ArrayList<>() で空のリストを作成

・.add() でどんどん追加できる

実務の現場でも、商品一覧・ユーザーリスト・エラーメッセージの記録など「同じ種類のデータがたくさんある」ケースでListは標準的に使われます。

Listの中にnullがあるとどうなる?

JavaのListでは、明示的に null という値を格納することができます。

java

List<String> names = new ArrayList<>();

names.add("佐藤");

names.add(null);

names.add("田中");

System.out.println(names.get(1)); // → null

一見問題なさそうですが、このnullに対して何かしらの処理をしようとするとエラーになります。

NullPointerExceptionの落とし穴

java

for (String name : names) {

    System.out.println(name.length()); // ← nullに対してlength()を呼び出す

}

// → Exception in thread "main" java.lang.NullPointerException

これを防ぐには、処理前に必ずnullチェックをしましょう。

java

for (String name : names) {

    if (name != null) {

        System.out.println(name.length());

    } else {

        System.out.println("名前が未登録です");

    }

}

nullを除外・削除する方法

最初からnullを取り除いて処理したい場合、Java8以降ではStreamやremoveIfを使う方法があります。

java

// Streamで除外した新しいListを作る

List<String> filtered = names.stream()

    .filter(Objects::nonNull)

    .collect(Collectors.toList());

// removeIfで元のListから一括削除

names.removeIf(Objects::isNull);

removeIf は元のListを直接変更するので注意しましょう。

実務でよくある「null」の事例

・フォーム入力の未記入項目:入力値をListに格納するとき、未記入がnullになることがある

・データベースからの取得:空欄のカラムがnullになることがある

・APIレスポンスのパース:JSONフィールドが空ならnullになる場合がある

いずれも、処理前のnullチェックが基本的な対策です。

まとめ

・Listは「順序がある」「サイズが変えられる」データ構造

・配列より操作の自由度が高く、メソッドも豊富

・ArrayListを使えば追加・削除も簡単

・nullはListに格納できるが、処理前に必ずチェックを

・removeIf や filter で事前に除外することも可能

次回:「List入門 後編:全要素のループ処理と値の加工・変換について」

Listの基本とnullの扱いが理解できたら、次はいよいよ実践的な操作へ!
次回は、for文・foreach文を使った全要素のループ処理と、Listの中身を条件付きで変換・加工する方法を解説します。