カテゴリ: Java 更新日: 2025/12/01

JavaのArrayListクラスとretainAllメソッドを完全解説!初心者でもわかる共通要素の保持

ArrayListのretainAllメソッド
ArrayListのretainAllメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaでリストから特定の要素だけを残して、それ以外を削除する方法はありますか?」

先生

「その場合は、ArrayListクラスのretainAllメソッドを使うと良いですよ。このメソッドを使えば、指定したコレクションに含まれる要素だけをリストに残すことができます。」

生徒

「なるほど!具体的にはどのように使うんですか?」

先生

「それでは、retainAllメソッドの使い方を詳しく見ていきましょう!」

1. ArrayListクラスとは?

1. ArrayListクラスとは?
1. ArrayListクラスとは?

ArrayListは、Javaのコレクションフレームワークに属するクラスで、動的なサイズのリストを提供します。リスト内の要素を簡単に追加、削除、操作することができ、柔軟なデータ管理が可能です。

以下は、ArrayListの基本的な使用例です。


import java.util.ArrayList;

public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> items = new ArrayList<>();
        items.add("Apple");
        items.add("Banana");
        items.add("Cherry");

        System.out.println("リストの内容: " + items);
    }
}

このコードでは、ArrayListを使ってリストを作成し、要素を追加しています。

2. retainAllメソッドとは?

2. retainAllメソッドとは?
2. retainAllメソッドとは?

retainAllメソッドは、リストから指定されたコレクションに含まれる要素だけを保持し、それ以外の要素を削除するためのメソッドです。この操作により、リスト内の要素が指定された条件に基づいてフィルタリングされます。

以下は、retainAllメソッドを使用した基本的な例です。


import java.util.ArrayList;
import java.util.Arrays;

public class RetainAllExample {
    public static void main(String[] args) {
        ArrayList<String> items = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry", "Date"));
        ArrayList<String> filter = new ArrayList<>(Arrays.asList("Banana", "Date"));

        // 共通要素を保持
        items.retainAll(filter);

        System.out.println("共通要素のみのリスト: " + items);
    }
}

このコードでは、リスト内からfilterコレクションに含まれる要素だけを保持しています。

3. retainAllメソッドの特徴と注意点

3. retainAllメソッドの特徴と注意点
3. retainAllメソッドの特徴と注意点

retainAllメソッドを使用する際の特徴と注意点は以下の通りです。

  • 指定されたコレクションに基づく保持: 削除される要素は、指定したコレクションに含まれないものです。
  • リストが変更される可能性: 一致する要素がない場合、リストは空になります。
  • 重複要素の取り扱い: 元のリスト内に重複があった場合、重複もそのまま保持されます。

以下は、さらに複雑な条件での使用例です。


import java.util.ArrayList;
import java.util.Arrays;

public class RetainAllComplexExample {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9));
        ArrayList<Integer> evenNumbers = new ArrayList<>(Arrays.asList(2, 4, 6, 8));

        // 偶数のみを保持
        numbers.retainAll(evenNumbers);

        System.out.println("偶数のみのリスト: " + numbers);
    }
}

この例では、リスト内の偶数だけを保持しています。

4. 実践例: ユーザー入力による要素の保持

4. 実践例: ユーザー入力による要素の保持
4. 実践例: ユーザー入力による要素の保持

以下の例では、ユーザーが指定した要素だけをリストに保持するプログラムを示します。


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class DynamicRetainAllExample {
    public static void main(String[] args) {
        ArrayList<String> items = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry", "Date"));
        Scanner scanner = new Scanner(System.in);

        System.out.println("保持する要素をカンマ区切りで入力してください (例: Banana,Date):");
        String input = scanner.nextLine();
        ArrayList<String> filter = new ArrayList<>(Arrays.asList(input.split(",")));

        // 入力に基づいて要素を保持
        items.retainAll(filter);

        System.out.println("保持後のリスト: " + items);
    }
}

このプログラムでは、ユーザーが入力した要素だけをリストに残すことができます。

5. まとめ

5. まとめ
5. まとめ

今回は、ArrayListクラスのretainAllメソッドを使って、リストから特定の要素だけを保持する方法を学びました。このメソッドは、指定したコレクションと一致する要素だけをリストに残し、それ以外を削除するための非常に便利なツールです。 特に、大量のデータを扱う場合や、条件に基づいてリストを絞り込みたい場合に役立ちます。 また、retainAllを使用する際は、元のリストが変更されることを理解しておく必要があります。

以下は、今回学んだ内容を振り返る簡単なコード例です。


import java.util.ArrayList;
import java.util.Arrays;

public class RetainAllSummary {
    public static void main(String[] args) {
        ArrayList<String> items = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry", "Date", "Elderberry"));
        ArrayList<String> favorites = new ArrayList<>(Arrays.asList("Banana", "Date"));

        // 共通要素を保持
        items.retainAll(favorites);

        System.out.println("お気に入りの要素だけのリスト: " + items);
    }
}

このコードを実行すると、リストには「Banana」と「Date」のみが残り、他の要素は削除されます。

先生と生徒の振り返り会話

生徒

retainAllメソッドを使えば、指定した要素だけを簡単に残すことができるんですね。」

先生

「そうですね。特定の条件に基づいてデータを絞り込む場合に非常に役立つメソッドです。特に、リスト間で共通の要素を見つけたいときに便利です。」

生徒

「元のリストが変更されるので、データを保持しておきたい場合は事前にコピーを作成する必要がありますね。」

先生

「その通りです。また、コレクションに含まれる要素だけを残すので、重複要素や順序もそのまま維持されます。」

生徒

「理解できました!次に使うときは注意してみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのArrayListと配列の違いは何ですか?retainAllメソッドはどちらに使えますか?

JavaのArrayListは、動的にサイズを変更できるコレクションで、配列とは異なり要素の追加や削除が簡単です。retainAllメソッドはArrayListなどのコレクションに対して使えますが、配列には使えません。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法