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)にコピーします.
二.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より大きい場合は、ターゲット配列にデフォルト値を使用して入力します.
三.システムクラスにおけるarraycopy()メソッドの使用
Arraycopy()メソッドはjava.lang.Systemクラスにあり、構文形式は次のとおりです.
System.arraycopy(dataType[]srcArray,int srcIndex,int destArray,int destIndex,int length)では、 src Arrayは元の配列を表す. src Indexは、元の配列の開始インデックスを表す. destArrayはターゲット配列を表す. destIndexは、ターゲット配列の開始インデックスを表す. lengthは、コピーする配列の長さを表します.
注:ターゲット配列は既に存在し、再構築されず、ターゲット配列の要素の一部を置換することに相当します.
一.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)では、次のようになります.
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)では、
注:ターゲット配列は既に存在し、再構築されず、ターゲット配列の要素の一部を置換することに相当します.
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);
}
}