Javaで「2つの配列を連結して1つにする」方法を、初心者向けにやさしく解説しつつ、具体的な例題で理解していきましょう。
1. 配列の連結って何?
配列の連結とは、簡単にいうと 2つの配列を順番につなげて1つの配列にすること です。
例えば:
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5};
Javaこれを連結すると:
int[] arr3 = {1, 2, 3, 4, 5};
Javaになります。
2. Javaで配列を連結する方法
Javaには「配列同士を直接つなげる関数」はありません。その代わり、System.arraycopy を使って 手動でコピーしてくっつける ことができます。
2-1 System.arraycopy の使い方
System.arraycopy(コピー元配列, コピー元の開始位置,
コピー先配列, コピー先の開始位置,
コピーする要素の数);
Java- コピー元配列:コピーしたい元の配列
- コピー元の開始位置:元配列の何番目からコピーするか(0から始まる)
- コピー先配列:コピー先の配列
- コピー先の開始位置:先頭の何番目からコピーするか
- コピーする要素の数:何個コピーするか
2-2 配列連結の手順
- 2つの配列を用意する
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5};
Java- 新しい配列を作る(長さは2つの配列の合計)
int[] arr3 = new int[arr1.length + arr2.length];
JavaSystem.arraycopyでコピー
// arr1をコピー
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
// arr2をコピー
System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length);
Java- 完成!
arr3は{1, 2, 3, 4, 5}になります。
3. 例題:成績表をまとめる
課題
クラスAとクラスBのテスト点数を1つにまとめて平均点を出したい。
int[] classA = {80, 90, 75};
int[] classB = {60, 85, 70};
Java解答例
import java.util.Arrays;
public class ArrayConcatExample {
public static void main(String[] args) {
int[] classA = {80, 90, 75};
int[] classB = {60, 85, 70};
// 連結用配列を作る
int[] allScores = new int[classA.length + classB.length];
// classA をコピー
System.arraycopy(classA, 0, allScores, 0, classA.length);
// classB をコピー
System.arraycopy(classB, 0, allScores, classA.length, classB.length);
// 配列の中身を確認
System.out.println("全員の点数: " + Arrays.toString(allScores));
// 平均を計算
int sum = 0;
for (int score : allScores) {
sum += score;
}
double average = sum / (double) allScores.length;
System.out.println("全員の平均点: " + average);
}
}
Java実行結果
全員の点数: [80, 90, 75, 60, 85, 70]
全員の平均点: 76.66666666666667
4. ポイントまとめ
- 配列は固定サイズなので、2つを連結するには 新しい配列を作ってコピーする 必要があります。
System.arraycopyの引数を間違えないように注意(どこから、どこへ、何個コピーするか)。- コピー後、元の配列は変わらない(参照の話を理解しておくと便利)。
- 小さい配列で練習して、コピーの挙動を確認すると理解が早いです。
💡 補足
慣れてきたら、ArrayList を使う方法でもっと簡単に配列の連結ができます。
