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

Java Java
スポンサーリンク

こちらが、複数の ArrayList を「順番を逆にして、重複も除く」複合処理を行うユーティリティ関数です。


ユーティリティ関数:mergeReversedWithoutDuplicates

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> mergeReversedWithoutDuplicates(List<T>... lists) {
        Set<T> resultSet = new LinkedHashSet<>();
        for (int i = lists.length - 1; i >= 0; i--) {
            List<T> list = lists[i];
            if (list != null) {
                for (T item : list) {
                    resultSet.add(item); // LinkedHashSet keeps first occurrence
                }
            }
        }
        return new ArrayList<>(resultSet);
    }
}
Java

特徴

処理内容説明
順番を逆にする最後のリストから順に処理して先頭に追加
重複を除くLinkedHashSet を使って一度だけ追加
順序を保持最初に出てきた要素の順序をそのまま保持(後の重複は無視)
型汎用対応ジェネリクス <T> を使ってどんな型でも使える

使用例

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> list1 = Arrays.asList("A", "B", "C");
        List<String> list2 = Arrays.asList("C", "D");
        List<String> list3 = Arrays.asList("E", "A");

        List<String> merged = ListUtils.mergeReversedWithoutDuplicates(list1, list2, list3);
        System.out.println(merged); // [E, A, C, D, B]
    }
}
Java

👉 解説:

  • 処理順は list3 → list2 → list1
  • 重複する "A""C" は最初に出てきたものだけ採用。
  • 結果は「逆順かつ重複なし」。

応用アイデア

  • 昇順・降順でソートしたい → Collections.sort() を追加
  • null や空リストを除外したい → if (list != null && !list.isEmpty())
  • 特定の条件でフィルタしたい → if (条件) を追加して add を制御
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました