Java | 配列(Array)と ArrayList の違い

Java Java
スポンサーリンク

では、複数の配列や複数の 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);
    }
}
Java

2. 実行結果イメージ

配列連結結果:
田中
佐藤
鈴木
高橋
伊藤

ArrayList連結結果:
田中
佐藤
鈴木
高橋
伊藤

3. ポイント

  1. 配列版は 可変長引数(T[]... arrays で複数配列を受け取れる
  2. ArrayList版も 可変長引数(ArrayList<T>... lists で複数リストを受け取れる
  3. 配列版は 最初の配列と同じ型で結果配列を作成
  4. ArrayList版は addAll() で簡単に全リストを結合
  5. ジェネリクス <T> で型に依存せず使用可能

💡 初心者向けまとめ

  • 「配列」「ArrayList」の両方に対応し、複数まとめて連結できる
  • 使い方は簡単で、関数呼び出し時にまとめたい配列やリストを全部渡すだけ
  • 実務で大量データや可変データを扱うときに便利
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました