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

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

DDD
リリース: 2024-11-28 14:17:11
オリジナル
856 人が閲覧しました

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

Java での 2 つのリストの比較

共有する要素の数を確認するために比較する 2 つのデータ セットがあります。これらが Java List オブジェクトではないと仮定して、次のアプローチを検討してください。

ArrayList を使用する

ArrayList を使用すると、retainAll メソッドを使用できます。このメソッドは、2 番目のリストにも存在する最初のリストの要素のみを保存します。例:

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

public class ListComparison {
    public static void main(String[] args) {
        Collection<String> listOne = new ArrayList<>(Arrays.asList("milan", "dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));
        Collection<String> listTwo = new ArrayList<>(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));

        listOne.retainAll(listTwo);
        System.out.println(listOne);
    }
}
ログイン後にコピー

このコードは、listOne と listTwo の間の共通要素のリストを出力します。

HashSet の使用

必要に応じて繰り返される値 (つまり、いずれかのリストに複数回出現する要素) を含めるには、ArrayList の代わりに HashSet を使用できます。 HashSet では重複が許可されないため、比較後、removeAll メソッドを使用して、両方のリストの要素の結合セットから共通要素を削除できます。これにより、固有の非共通要素のリストが得られます。

import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;

public class ListComparison {
    public static void main(String[] args) {

        Collection<String> listOne = Arrays.asList("milan", "iga",
                "dingo", "iga",
                "elpha", "iga",
                "hafil", "iga",
                "meat", "iga",
                "neeta.peeta", "iga");

        Collection<String> listTwo = Arrays.asList("hafil",
                "iga",
                "binga",
                "mike",
                "dingo", "dingo", "dingo");

        Collection<String> similar = new HashSet<>(listOne);
        Collection<String> different = new HashSet<>();
        different.addAll(listOne);
        different.addAll(listTwo);

        similar.retainAll(listTwo);
        different.removeAll(similar);

        System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
    }
}
ログイン後にコピー

この変更されたコードは、2 つのリスト間の類似要素と異なる要素を出力します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート