こんにちは、バナナドリームです。
今回からは、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の中身を条件付きで変換・加工する方法を解説します。

