複数のリストからの共通要素の決定
Java では、複数のリストに共有される共通要素を検索する必要が生じる場合があります。これは、データ セットの比較や交差部分の特定などのタスクに役立つ操作です。この記事では、Java のコレクション フレームワークを使用して 2 つのリスト間の共通要素を取得する効率的な方法について説明します。
まず、それぞれ 3 つの整数を含む 2 つの ArrayList オブジェクトがあるシナリオを考えてみましょう。目標は、両方のリストに存在する要素を検索して返すことです。
解決策: Collection#retainAll()
これを達成する最も簡単な方法の 1 つこれは Collection#retainAll() メソッドを使用することによって行われます。このメソッドは、指定されたコレクション パラメーターにも存在しないすべての要素を削除することによって、呼び出し元のコレクションを変更します。
listA.retainAll(listB);
上記のコードを実行すると、listA には listA と listB の両方に共通する要素のみが含まれます。 .
代替アプローチ: 新しいコレクションを作成する
必要な場合listA の元の内容を保持したまま、共通要素を含む新しいコレクションを作成できます。
List<Integer> common = new ArrayList<>(listA); common.retainAll(listB);
この場合、共通リストには listA と listB の両方に存在する要素のみが含まれます。 listA の元の内容はそのまま残ります。
ストリームベースのソリューション
Java 8 では、コレクションを処理および操作する宣言的な方法を提供する強力なストリーム API。 stream#filter() メソッドを利用して、特定の述語に基づいて要素をフィルタリングできます。
List<Integer> common = listA.stream().filter(listB::contains).toList();
このストリームベースのアプローチは、listA 内の各要素に対してフィルタ操作を実行し、それが listB に存在するかどうかを確認します。 contains() メソッド。結果のリストには、listA と listB の間の共通要素のみが含まれます。
以上がJava で複数のリスト間で共通要素を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。