ホームページ >Java >&#&チュートリアル >Java で ArrayList の共通部分と和集合を効率的に見つけるにはどうすればよいですか?

Java で ArrayList の共通部分と和集合を効率的に見つけるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-23 04:27:10220ブラウズ

How Can I Efficiently Find the Intersection and Union of ArrayLists in Java?

Java での ArrayList の交差と結合の検索

ArrayList を使用する場合、多くの場合、2 つまたはすべての配列の交差または結合を見つけることが必要になります。さらに多くのリスト。これは、ファイルのフィルタリングや複数のソースからのデータの結合などのタスクに役立ちます。

Intersection メソッドと Union メソッド

Java には、ArrayList で Intersection および Union を実行するためのメソッドがいくつか用意されています。 :

  • retainAll(コレクション c): 指定されたコレクションに含まれるこのリスト内の要素のみを保持します。
  • removeAll(Collection c): このリスト内のすべての要素を削除します指定されたコレクションに含まれるコレクション。
  • addAll(Collection c): 指定されたコレクション内のすべての要素をこのリストに追加します。

これらのメソッドは元の ArrayList を変更しますが、これはすべての場合に望ましいとは限りません。あるいは、元のリストを変更せずに独自のメソッドを実装して、交差と共用体を処理することもできます。

public static <T> List<T> intersection(List<T> list1, List<T> list2) {
    List<T> list = new ArrayList<>();

    for (T t : list1) {
        if (list2.contains(t)) {
            list.add(t);
        }
    }

    return list;
}

public static <T> List<T> union(List<T> list1, List<T> list2) {
    Set<T> set = new HashSet<>();

    set.addAll(list1);
    set.addAll(list2);

    return new ArrayList<>(set);
}

代替データ構造

ArrayList は変更可能なデータ構造です。これにより要素の重複が許可されます。セット操作の場合は、別のデータ構造を使用することを検討できます。

  • Set: セットは、要素が一意であることを自動的に保証します。ただし、要素の順序は維持されません。
  • SortedSet: ソート セットは、要素を並べ替えられた順序で維持します。これは、一部のアプリケーションで役立つ場合があります。

タスクに適切なデータ構造を選択することで、コードの実行時間とメモリ使用量を最適化できます。

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

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