【Java】copyOfを使って配列(Array)をコピーし、新しい配列を作成する!

配列(Array)をコピーし、新しい配列を作成するにはArrayクラスのcopyOfメソッドを使用します。

ArraysクラスのcopyOfメソッドは、配列のコピーして新しい配列を作成するメソッドとなります。

ArraysクラスのcopyOfメソッドを使用することでコピーしたい配列の要素数を設定して新しい配列を作成したり、コピーしたい配列の要素を全てコピーして新しい配列を作成することもできます。

今回はArraysクラスのtcopyOfメソッドを使って以下の場合で配列をコピーし、新しい配列を作成していきます。

⚫︎ コピーする配列の要素数を指定して新しい配列を作成する場合
⚫︎ コピーする配列の要素を全てコピーして新しい配列を作成する場合
⚫︎ コピーする配列の要素数より指定する要素数の方が多い状態で新しい配列を作成する場合
⚫︎ コピーする配列の要素数を負の数で指定し、新しい配列を作成する場合
⚫︎ コピーする配列がnullの状態で新しい配列を作成する場合

また、以下の場合で多次元配列をコピーし、新しい配列を作成する方法についても紹介していきます。

⚫︎ 多次元配列をコピーして新しい多次元配列を作成する場合
⚫︎ 多次元配列をコピーして新しい一次元配列を作成する場合

copyOfメソッドとは

ArrayクラスのcopyOfメソッドとは、配列の要素コピーするメソッドであり、指定された配列をコピーし、指定された要素数分を新しい配列にコピーします。

copyOfメソッドの書き方

AarrayクラスのcopyOfメソッドの構文は下記となります。

Arrayクラスをインポートすることで、Arraysクラスのメソッドを使用できます。

パラメータ

⚫︎ 配列:
コピーしたい配列を指定する
⚫︎ コピーする要素数:
コピーしたい要素の数を指定する(スタートは一番左から)

copyOfの()に第1パラメータとして配列を、第2パラメータとして要素数を指定することで配列の要素数だけ新しい配列にコピーします。

配列をコピーして新しい配列を作成するサンプルコード

配列をコピーして新しい配列を作成するサンプルコードを紹介します。

コピーする要素数を指定する場合

出力結果

・ コピーされる配列
[9, 8, 21, 33, 15]

・ コピーした新しい配列
[9, 8, 21]

copyOfメソッドの第二引数に数値を指定することで指定した数値分だけ配列の要素をコピーしています。

要素を全てコピーする場合

出力結果

・ コピーされる配列
[9, 8, 21, 33, 15]

・ コピーした新しい配列
[9, 8, 21]

copyOfメソッドの第2パラメータに配列の長さを指定することで配列の要素を全てコピーしています。

配列の長さを取得するlengthメソッドについてはこちらをご参照ください。

コピーする配列の要素数より指定する要素数の方が多い場合

出力結果

・ コピーされる配列
[9, 8, 21, 33, 15]

・ コピーした新しい配列
[9, 8, 21, 33, 15, 0, 0]

コピーする配列の要素数より指定する要素数の方が多い場合、足りない要素は「0」になります。

指定する要素数が負の数である場合

出力結果

Exception in thread “main” java.lang.NegativeArraySizeException: -3

配列の長さに負の数はない為、エラーが発生します。

コピーする配列がnullの場合

出力結果

Exception in thread “main” java.lang.NullPointerException

コピーする配列がnullであることから、エラーが発生します。

多次元配列をコピーして新しい多次元配列を作成するサンプルコード

二次元配列から新しい二次元配列を作成する場合

出力結果

・ コピーされる配列
[[9, 8, 21], [33, 15]]

・ コピーした新しい配列
[[9, 8, 21], [33, 15], null]

三次元配列から新しい三次元配列を作成する場合

出力結果

・ コピーされる配列
[[[9, 8, 21], [33, 15], [45, 78]]]

・ コピーした新しい配列
[[[9, 8, 21], [33, 15], [45, 78]], null, null]

多次元配列をコピーして新しい一次元配列を作成するサンプルコード

二次元配列から新しい一次元配列を作成する場合

出力結果

・ コピーされる配列
[[9, 8, 21], [33, 15]]

・ コピーした新しい配列
[33, 15]

三次元配列から新しい一次元配列を作成する場合

出力結果

・ コピーされる配列
[[[9, 8, 21], [33, 15], [45, 78]]]

・ コピーした新しい配列
[9, 8, 21]

今回のポイント

copyOfで配列をコピーして新しい配列を作成

配列をコピーして新しい配列を作成するにはArraysクラスのcopyOfメソッドを使用する

⚫︎ ArraysクラスのcopyOfメソッドで、配列のコピーし、新しい配列を作成する

⚫︎ copyOfメソッドの第1パラメータにはコピー元の配列を、第2パラメータにコピーする要素数を指定する

⚫︎ 要素を全てコピーする場合はcopyOfメソッドの第2パラメータにコピー元の配列.lengthを指定する

⚫︎ copyOfメソッドの第2パラメータが負の数である場合はエラーが発生する

⚫︎ copyOfメソッドでコピーする配列の要素数より第2パラメータのコピーする要素数の方が多い場合、コピーはされるが、足りない要素は「0」になる

⚫︎ copyOfメソッドでコピー元の配列がnullの場合はエラーが発生する

⚫︎ copyOfメソッドで多次元配列をコピーし、新しく一次元配列を作成することも可能

関連記事

インスタンスをコピーするcloneメソッドについてはこちらをご参ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し