では、複数の配列や複数の ArrayList をまとめて連結できる 拡張版ユーティリティ を作ります。
これで「何個でもまとめて連結」が可能になります。
1. 複数配列・複数 ArrayList 連結ユーティリティ
import java.util.ArrayList;
import java.util.Arrays;
public class ConcatUtilMultiple {
// ----------------------------
// 配列版(可変長引数を使用)
// ----------------------------
@SafeVarargs
public static <T> T[] concatAll(T[]... arrays) {
// 総サイズを計算
int totalLength = 0;
for(T[] arr : arrays) totalLength += arr.length;
if(arrays.length == 0) return null;
// 結果配列を作成(最初の配列と同じ型)
T[] result = Arrays.copyOf(arrays[0], totalLength);
int currentIndex = arrays[0].length;
for(int i = 1; i < arrays.length; i++) {
for(T element : arrays[i]) {
result[currentIndex++] = element;
}
}
return result;
}
// ----------------------------
// ArrayList版(可変長引数を使用)
// ----------------------------
@SafeVarargs
public static <T> ArrayList<T> concatAll(ArrayList<T>... lists) {
ArrayList<T> result = new ArrayList<>();
for(ArrayList<T> list : lists) {
result.addAll(list);
}
return result;
}
// ----------------------------
// 使用例
// ----------------------------
public static void main(String[] args) {
// 配列
String[] classA = {"田中", "佐藤"};
String[] classB = {"鈴木"};
String[] classC = {"高橋", "伊藤"};
String[] allClassesArray = concatAll(classA, classB, classC);
System.out.println("配列連結結果:");
for(String name : allClassesArray) System.out.println(name);
System.out.println();
// ArrayList
ArrayList<String> listA = new ArrayList<>(Arrays.asList("田中","佐藤"));
ArrayList<String> listB = new ArrayList<>(Arrays.asList("鈴木"));
ArrayList<String> listC = new ArrayList<>(Arrays.asList("高橋","伊藤"));
ArrayList<String> allClassesList = concatAll(listA, listB, listC);
System.out.println("ArrayList連結結果:");
for(String name : allClassesList) System.out.println(name);
}
}
Java2. 実行結果イメージ
配列連結結果:
田中
佐藤
鈴木
高橋
伊藤
ArrayList連結結果:
田中
佐藤
鈴木
高橋
伊藤
3. ポイント
- 配列版は 可変長引数(
T[]... arrays) で複数配列を受け取れる - ArrayList版も 可変長引数(
ArrayList<T>... lists) で複数リストを受け取れる - 配列版は 最初の配列と同じ型で結果配列を作成
- ArrayList版は
addAll()で簡単に全リストを結合 - ジェネリクス
<T>で型に依存せず使用可能
💡 初心者向けまとめ
- 「配列」「ArrayList」の両方に対応し、複数まとめて連結できる
- 使い方は簡単で、関数呼び出し時にまとめたい配列やリストを全部渡すだけ
- 実務で大量データや可変データを扱うときに便利
