Java

【Java入門】Listから特定のデータを抽出する方法まとめ(条件検索・filter)

勉強ちゃん

Javaで開発していると、Listの中から特定の要素を取り出す処理は頻出です。
この記事では、for文拡張for文Stream API を使った方法を例付きでわかりやすく解説します。


サンプルで使用するデータ(User、List)

まずは共通で使うデータとして、User というクラスとそのリストを用意します。

public class User {
private String name;
private int age;

public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {

     return name;
  }
public int getAge() {

     return age;
  }
}
List<User> users = Arrays.asList(
new User("テストさん1", 25),
new User("テストさん2", 30),
new User("テストさん3", 20)
);

例として、年齢が25歳以上のユーザーを抽出

🔍 方法①:for文で抽出する(基本)

for (int i = 0; i < users.size(); i++) {
if (users.get(i).getAge() > 25) {
System.out.println(users.get(i).getName());
}
}

インデックスを使ってデータを扱いたいとき、for文が便利!


🔍 方法②:拡張for文(for-each)

for (User user : users) {
if (user.getAge() > 25) {
System.out.println(user.getName());
}
}

✅ 読みやすく、安全。Java初心者〜実務でもよく使われます


🔍 方法③:Stream API(Java 8以降)一番おすすめ

List<User> filtered = users.stream()
.filter(user -> user.getAge() > 25)
.collect(Collectors.toList());

for (User u : filtered) {
System.out.println(u.getName());
}

👉 filter() で条件に合う要素だけを抽出
👉 collect(Collectors.toList()) で新しいリストを生成


🧠 応用:名前が「テストさん2」の人だけ取り出す

List<User> result = users.stream()
.filter(user -> "テストさん2").equals(user.getName())
.collect(Collectors.toList());

⚠ よくあるミスと注意点

ミス内容対処法
NullPointerExceptionnullチェックを入れる
複数条件が必要&&
1件しかないと思ってget(0)するリストが空でないか確認する

📝 まとめ

方法特徴推奨度
for古い、細かい制御ができる★★☆☆☆
拡張for安全&読みやすい★★★★☆
Stream.filter()シンプル&パワフル★★★★★

💬 実務でのポイント

  • データ件数が少ない場合 → for-each で十分
  • データを別リストに保存するstream().filter().collect() が便利

ABOUT ME
自己紹介
自己紹介
職業:Web開発エンジニア
こんにちは!
このブログでは、ITのお仕事で学んだ知識や、 日本での生活で学んだ知識を紹介しています。
お役に立てればうれしいです 😊
記事URLをコピーしました