ゆるゆるプログラミング

・配列のコピーを作る

ここでは、配列のコピー(複写)を作る方法を紹介します。ここで紹介する方法は、コピー元の配列を引数として渡して、コピーされた配列を戻すメソッドで戻すものです。

ここから、配列をコピーするJavaのソースコードを使って解説していきます。

ArrayCopy.java ← クリックしてダウンロードページに移動
001:    public class ArrayCopy {
002:    	// 配列をコピー作成するメソッド
003:    	private static int[] array_copy( int[] srcary )
004:    	{
005:    		// 元の配列srcaryの要素数でint配列desaryを作成
006:    		int[] desary = new int[ srcary.length ];
007:    
008:    		// 配列desaryにsrcaryの値を代入
009:    		for ( int i = 0; i < srcary.length; ++ i ) {
010:    			desary[ i ] = srcary[ i ];
011:    		}
012:    
013:    		// 作成した配列desaryを戻す
014:    		return desary;
015:    	}
016:    
017:    	// メイン
018:    	public static void main( String[] args ) {
019:    		// 数値群
020:    		int[] src = { 1, 2, 4, 8, 16, 32, 64 };
021:    		// 新しく作成する配列(コピー先)
022:    		int[] des;
023:    
024:    		// 配列の値をコピー(srcの値をdesにコピー)
025:    		des = array_copy( src );
026:    
027:    		// 結果を確認
028:    		for ( int i = 0; i < des.length; ++ i ) {
029:    			System.out.println( des[ i ]  );
030:    		}
031:    	}
032:    }

ArrayCopy.Javaの出力結果

 1
 2
 4
 8
 16
 32
 64

出力結果から、int型配列srcの値が、desにコピーされていることが確認できます。

ここから、ソースコードについて解説してきます。

002:    	// 配列をコピー作成するメソッド
003:    	private static int[] array_copy( int[] srcary )
004:    	{

private static int[] array_copy( int[] srcary )が配列をコピーするメソッドです。srcaryがコピー元の配列です。

005:    		// 元の配列srcaryの要素数でint配列desaryを作成
006:    		int[] desary = new int[ srcary.length ];

コピー元の配列srcaryの要素数(srcary.length)で、コピー先の配列desaryを初期化しています。

008:    		// 配列desaryにsrcaryの値を代入
009:    		for ( int i = 0; i < srcary.length; ++ i ) {
010:    			desary[ i ] = srcary[ i ];
011:    		}

for文を使って、コピー先の配列desaryの各要素に、コピー元の配列srcaryの値を代入にしています。

013:    		// 作成した配列desaryを戻す
014:    		return desary;

メソッドの最後に、配列desaryをreturn文で戻しています。

017:    	// メイン
018:    	public static void main( String[] args ) {
019:    		// 数値群
020:    		int[] src = { 1, 2, 4, 8, 16, 32, 64 };
021:    		// 新しく作成する配列(コピー先)
022:    		int[] des;
023:    
024:    		// 配列の値をコピー(srcの値をdesにコピー)
025:    		des = array_copy( src );
026:    
027:    		// 結果を確認
028:    		for ( int i = 0; i < des.length; ++ i ) {
029:    			System.out.println( des[ i ]  );
030:    		}
031:    	}

実際に、array_copyメソッドを使って配列の値をコピーしています。25行目が実際にメソッドを呼んでコピーを作成している箇所です。

■関連コンテンツ

配列 同じ型の変数をまとめた配列について解説
for文 繰り返し処理に使用するfor文について解説

■新着情報

2019.09.13 長さの単位変換 1マイル、1フィートは何m?
2019.09.06 クイックソート 高速に配列に並び替える方法
2019.09.05 中央値(メディアン) 配列に格納されている値の中央値を求める
2019.09.05 最頻値 配列から出現回数が最も多い値の取得
2019.09.03 配列値の反転 配列の反転処理
2019.08.05 トランプの操作 トランプを操作するクラス

Topへ