Javaで配列をコピーする3つの方法

8611 ワード

Javaで配列をコピーする3つの方法
一.Arrays.copyOf(datatype[]srcArray,int length)
ここで、src Arrayはコピーする配列を表し、lengthはコピー後の新しい配列の長さを表す.
この方法で配列をコピーする場合、デフォルトでは元の配列の最初の要素(インデックス値0)からコピーが開始され、ターゲット配列の長さはlengthになります.lengthがsrcArray.lengthより大きい場合、ターゲット配列にはデフォルト値で埋め込まれます.lengthがsrcArray.lengthより小さい場合は、length番目の要素(インデックス値がlength-1)にコピーします.
import java.util.Arrays;
public class TestDemo {
	public static void main(String[] args) {
		int[] scores = new int[]{57, 81, 69, 75, 91};
		//        , scores   5        ,
		//             3      。
		int[] newScores = (int[])Arrays.copyOf(scores, 8);
	}
}

二.ArraysクラスのcopyOfRange()メソッドを用いて配列を複製する
Arrays.copyOfRange(dataType[]srcArray,int startIndex,int endIndex)では、次のようになります.
  • src Array:元の配列を表します.
  • startIndex:コピーを開始する開始インデックスを表し、ターゲット配列には開始インデックスに対応する要素が含まれます.また、startIndexは0からsrc Array.lengthの間でなければなりません.
  • endIndex:終了インデックスを表し、ターゲット配列には終了インデックスに対応する要素が含まれません.endIndexはstartIndex以上でなければなりません.srcArray.lengthより大きくてもいいです.srcArray.lengthより大きい場合は、ターゲット配列にデフォルト値を使用して入力します.
  • public class TestDemo {
    	public static void main(String[] args) {
    		int[] scores = new int[]{57, 81, 68, 75, 91, 66, 75, 84};
    		//       5    newScores   
    		int[] newScores = (int[]) Arrays.copyOfRange(scores, 0, 5);
    	}
    }
    

    三.システムクラスにおけるarraycopy()メソッドの使用
    Arraycopy()メソッドはjava.lang.Systemクラスにあり、構文形式は次のとおりです.
    System.arraycopy(dataType[]srcArray,int srcIndex,int destArray,int destIndex,int length)では、
  • src Arrayは元の配列を表す.
  • src Indexは、元の配列の開始インデックスを表す.
  • destArrayはターゲット配列を表す.
  • destIndexは、ターゲット配列の開始インデックスを表す.
  • lengthは、コピーする配列の長さを表します.

  • 注:ターゲット配列は既に存在し、再構築されず、ターゲット配列の要素の一部を置換することに相当します.
    public class TestDemo {
    	public static void main(String[] args) {
    		int[] scores = new int[]{100, 91, 68, 75, 66, 75, 68};
    		int[] newScores = new int[12];
    		System.arraycopy(socres, 0, newScores, 2, 8);
    	}
    }