ホームページ >Java >&#&チュートリアル >2 つの Java リストで共通の要素を効率的に見つけるにはどうすればよいですか?

2 つの Java リストで共通の要素を効率的に見つけるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 00:16:11475ブラウズ

How Can I Efficiently Find Common Elements in Two Java Lists?

2 つのリスト内の共通要素の検索

2 つのリスト間の共通要素を特定することは、プログラミングにおける一般的な要件です。ここでは、Java の Collection API を使用してこれを実現する方法についてのガイドを示します。

アプローチ 1: Collection#retainAll() を使用する

Collection#retainAll() メソッドは次のようになります。別のリストにも存在する要素のみを含むように既存のリストを変更するために使用されます。このアプローチは効率的かつ簡潔です。

List<Integer> listA = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> listB = new ArrayList<>(Arrays.asList(2, 4, 6));

listA.retainAll(listB);
// The resulting listA will now contain only common elements: [2]

アプローチ 2: 共通要素を含む新しいリストを作成する

元のリストの変更を避けるために、新しいリストを作成できます。共通の要素のみを含むもの。この方法は効率が若干劣りますが、元のリストの整合性は維持されます。

List<Integer> listA = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> listB = new ArrayList<>(Arrays.asList(2, 4, 6));

List<Integer> common = new ArrayList<>(listA);
common.retainAll(listB);
// The resulting common list will contain only common elements: [2]

アプローチ 3: Java Streams の使用

Java Streams は、より機能的なアプローチを提供します。共通要素を見つけること。 Collection#contains() メソッドを利用すると、Stream#filter() を使用して非共通要素をフィルターで除外できます。

List<Integer> listA = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> listB = new ArrayList<>(Arrays.asList(2, 4, 6));

List<Integer> common = listA.stream().filter(listB::contains).toList();
// The resulting common list will contain only common elements: [2]

結論

これらのアプローチは次のことを提供します。 2 つのリスト内の共通要素を見つけるためのさまざまな方法。方法の選択は、パフォーマンスの考慮事項や元のリストの変更の必要性など、特定の要件によって異なります。

以上が2 つの Java リストで共通の要素を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。