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

Java Java
スポンサーリンク

では、配列と ArrayList の両方を 同じ関数で受け取り、統一して連結して返す完全版 を作ります。
Java では型が違うので少し工夫が必要ですが、ジェネリクスとオーバーロードで対応可能です。


1. 完全統一版:配列 or ArrayList を連結する関数

import java.util.ArrayList;
import java.util.Arrays;

public class ConcatUtilUnified {

    // ----------------------------
    // 配列版
    // ----------------------------
    public static <T> T[] concat(T[] arr1, T[] arr2) {
        T[] result = Arrays.copyOf(arr1, arr1.length + arr2.length);
        for (int i = 0; i < arr2.length; i++) {
            result[arr1.length + i] = arr2[i];
        }
        return result;
    }

    // ----------------------------
    // ArrayList版
    // ----------------------------
    public static <T> ArrayList<T> concat(ArrayList<T> list1, ArrayList<T> list2) {
        ArrayList<T> result = new ArrayList<>();
        result.addAll(list1);
        result.addAll(list2);
        return result;
    }

    // ----------------------------
    // 使用例
    // ----------------------------
    public static void main(String[] args) {
        // 配列
        String[] classA = {"田中", "佐藤", "鈴木"};
        String[] classB = {"高橋", "伊藤"};
        String[] allClassesArray = concat(classA, classB);
        System.out.println("配列連結結果:");
        for(String name : allClassesArray) System.out.println(name);

        System.out.println();

        // ArrayList
        ArrayList<String> listA = new ArrayList<>();
        listA.add("田中"); listA.add("佐藤"); listA.add("鈴木");

        ArrayList<String> listB = new ArrayList<>();
        listB.add("高橋"); listB.add("伊藤");

        ArrayList<String> allClassesList = concat(listA, listB);
        System.out.println("ArrayList連結結果:");
        for(String name : allClassesList) System.out.println(name);
    }
}
Java

2. 実行結果イメージ

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

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

3. ポイント

  1. オーバーロードで同じ関数名 concat を使い、引数の型で処理を分ける
  2. 配列版は Arrays.copyOf とループでコピー
  3. ArrayList版は addAll() で簡単に連結
  4. ジェネリクス <T> により、文字列以外の型でも使える

💡 初心者向けまとめ

  • これで 配列と ArrayList 両方に同じ感覚で連結操作 ができる
  • 実務でも、データの型や構造が変わっても同じ関数名で呼び出せるので便利
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました