こちらが、複数の 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を制御
