Java | 複数の ArrayList をまとめて1つのリストに連結するユーティリティ関数

Java Java
スポンサーリンク

以下に、複数の ArrayList を連結しながら「重複を除く」「順番を逆にする」ユーティリティ関数をそれぞれ紹介します。


① 重複を除いて連結するバージョン

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class ListUtils {
    @SafeVarargs
    public static <T> List<T> mergeWithoutDuplicates(List<T>... lists) {
        Set<T> resultSet = new LinkedHashSet<>();
        for (List<T> list : lists) {
            if (list != null) {
                resultSet.addAll(list);
            }
        }
        return new ArrayList<>(resultSet);
    }
}
Java

特徴

  • LinkedHashSet を使うことで 重複を除去しつつ順序も保持
  • 元の順番を保ったまま、重複だけを取り除きます。

使用例(重複除去)

List<String> list1 = Arrays.asList("Apple", "Banana", "Orange");
List<String> list2 = Arrays.asList("Banana", "Grape");

List<String> merged = ListUtils.mergeWithoutDuplicates(list1, list2);
System.out.println(merged); // [Apple, Banana, Orange, Grape]
Java

② 順番を逆にして連結するバージョン

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListUtils {
    @SafeVarargs
    public static <T> List<T> mergeReversed(List<T>... lists) {
        List<T> result = new ArrayList<>();
        for (int i = lists.length - 1; i >= 0; i--) {
            List<T> list = lists[i];
            if (list != null) {
                result.addAll(list);
            }
        }
        return result;
    }
}
Java

特徴

  • リストの順番を逆にして連結(最後のリストが先頭にくる)。
  • 各リスト内の順番はそのまま。

使用例(順番逆)

List<String> list1 = Arrays.asList("A", "B");
List<String> list2 = Arrays.asList("C", "D");

List<String> merged = ListUtils.mergeReversed(list1, list2);
System.out.println(merged); // [C, D, A, B]
Java
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました