Java の配列の要素をコピーする「Arrays.copyOf()」の基本
新人
「Java で配列のデータをコピーする方法はありますか?」
先輩
「あるよ!Java では Arrays.copyOf() を使うと簡単に配列をコピーできるんだ。」
新人
「それは便利ですね!どうやって使うんですか?」
先輩
「それじゃあ、まず配列の基本から見ていこう!」
1. Java の配列とは?(基本的な説明)
Java の配列とは、複数のデータをまとめて扱うための仕組みです。配列を使うことで、同じ種類のデータを効率的に管理できます。
配列の基本的な宣言方法
public class ArrayExample {
public static void main(String[] args) {
// 整数型の配列を作成
int[] numbers = {10, 20, 30, 40, 50};
// 配列の中身を表示
System.out.println("配列の要素:");
for (int num : numbers) {
System.out.print(num + " ");
}
}
}
配列の要素:
10 20 30 40 50
2. 配列のコピーとは?(基本概念)
配列のコピーとは、元の配列のデータを別の配列に複製することを指します。
なぜ配列をコピーするのか?
- ✔ 元の配列を変更せずに別のデータを保持したい
- ✔ 配列のサイズを変更したい
- ✔ 一部のデータだけを抜き出したい
配列のコピー方法の種類
- ✔
Arrays.copyOf()を使う - ✔
System.arraycopy()を使う - ✔
forループを使う
この中でも、Arrays.copyOf() は簡単に配列をコピーできる方法です。次の章で詳しく解説します。
3. Arrays.copyOf() を使った基本的なコピー方法
Java で配列をコピーする方法の一つに Arrays.copyOf() があります。このメソッドを使うと、簡単に配列をコピーできます。
Arrays.copyOf() の基本構文
import java.util.Arrays;
public class CopyArrayExample {
public static void main(String[] args) {
// 元の配列
int[] original = {1, 2, 3, 4, 5};
// 配列をコピー
int[] copied = Arrays.copyOf(original, original.length);
// コピー後の配列を表示
System.out.println("コピー後の配列:");
for (int num : copied) {
System.out.print(num + " ");
}
}
}
コピー後の配列:
1 2 3 4 5
このように Arrays.copyOf() を使うと、元の配列の全ての要素をコピーすることができます。
4. 配列の一部をコピーする方法
Arrays.copyOf() を使えば、配列の一部だけをコピーすることも可能です。
配列の一部をコピーする例
import java.util.Arrays;
public class PartialCopyExample {
public static void main(String[] args) {
// 元の配列
int[] original = {10, 20, 30, 40, 50};
// 最初の3つの要素をコピー
int[] partialCopy = Arrays.copyOf(original, 3);
// コピー後の配列を表示
System.out.println("一部コピー後の配列:");
for (int num : partialCopy) {
System.out.print(num + " ");
}
}
}
一部コピー後の配列:
10 20 30
指定したサイズ分だけコピーされるため、配列の一部分を取得するのに便利です。
5. 配列のサイズを変更しながらコピーする方法
Arrays.copyOf() は、配列のサイズを変更しながらコピーすることも可能です。
サイズを変更してコピーする例
import java.util.Arrays;
public class ResizeArrayExample {
public static void main(String[] args) {
// 元の配列
int[] original = {5, 10, 15};
// サイズを大きくしてコピー
int[] extendedArray = Arrays.copyOf(original, 5);
// コピー後の配列を表示
System.out.println("サイズ変更後の配列:");
for (int num : extendedArray) {
System.out.print(num + " ");
}
}
}
サイズ変更後の配列:
5 10 15 0 0
サイズを大きくした場合、追加された部分にはデフォルト値(int の場合は 0)が入ります。
6. Arrays.copyOf() と System.arraycopy() の違い
Java には配列をコピーする方法が複数あります。その中でも Arrays.copyOf() と System.arraycopy() はよく使われるメソッドです。
Arrays.copyOf() の特徴
- ✔ 配列のサイズ変更ができる
- ✔ 簡単な記述でコピー可能
- ✔ 新しい配列を作成して返す
System.arraycopy() の特徴
- ✔ コピー元の配列と同じサイズを維持
- ✔ コピー範囲を細かく指定できる
- ✔
Arrays.copyOf()よりも処理が高速
System.arraycopy() の使い方
public class ArrayCopyExample {
public static void main(String[] args) {
int[] original = {10, 20, 30, 40, 50};
int[] copied = new int[3];
// System.arraycopy(元の配列, 開始位置, コピー先, コピー開始位置, 長さ)
System.arraycopy(original, 1, copied, 0, 3);
System.out.println("コピー後の配列:");
for (int num : copied) {
System.out.print(num + " ");
}
}
}
コピー後の配列:
20 30 40
System.arraycopy() を使うと、部分的に配列をコピーできるので、特定の範囲をコピーしたい場合に便利です。
7. 配列のコピーを応用した実践例
ここでは、配列のコピーを活用して、実際のプログラムを作成してみましょう。
例:配列のサイズを2倍に拡張
import java.util.Arrays;
public class ExpandArray {
public static void main(String[] args) {
int[] original = {1, 2, 3, 4, 5};
// 配列のサイズを2倍に拡張
int[] expanded = Arrays.copyOf(original, original.length * 2);
System.out.println("拡張後の配列:");
for (int num : expanded) {
System.out.print(num + " ");
}
}
}
拡張後の配列:
1 2 3 4 5 0 0 0 0 0
このように、配列を動的に拡張して、新しい要素を追加できるようにすることができます。
8. 練習問題:「配列をコピーするコードを書こう」
以下の条件に従って、配列のコピーを行うプログラムを作成してください。
問題
- ✔ 整数の配列
{5, 10, 15, 20, 25}を作成する - ✔
Arrays.copyOf()を使って配列をコピーする - ✔ コピー後の配列のサイズを 7 に変更する
- ✔ コピーした配列の内容を表示する
解答
import java.util.Arrays;
public class CopyArrayPractice {
public static void main(String[] args) {
int[] original = {5, 10, 15, 20, 25};
// 配列をサイズ7に拡張してコピー
int[] copied = Arrays.copyOf(original, 7);
System.out.println("コピー後の配列:");
for (int num : copied) {
System.out.print(num + " ");
}
}
}
コピー後の配列:
5 10 15 20 25 0 0
この問題を解くことで、配列のコピー方法をしっかりと理解できるようになります。