回答:
Javaの配列の長さは不変です。したがって、目的の部分を新しい配列としてコピーする必要があります。java.util.Arraysクラスのメソッドを
使用します。copyOfRange
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndexは、コピーする範囲の初期インデックスです。
endIndexは、コピーされる範囲の最後のインデックスです。(このインデックスは配列の外にある場合があります)
例えば:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
endIndex
ます。最初の引数として渡される配列のサイズよりも大きい値を指定することはできません。あなたは完全なコピーをしたいのであれば、この配列および使用を参照する変数を作成するArrays.copyOfRange(var, 0, var.length)
かArrays.copyOf(var, var.length)
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,Short.MAX_VALUE)
ArrayIndexOutOfBoundsException
。
はい、Arrays.copyOfRangeを使用できます
同じことを行います(コピーがあることに注意してください。最初の配列は変更しません)。
List
とa を使用する必要がありsubList
ます。
あなたが試すことができます:
System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array
// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2);
Systemのjavadocを参照してください。
Java 1.6以降を使用Arrays.copyOfRange
している場合は、を使用して配列の一部をコピーできます。javadocから:
指定された配列の指定された範囲を新しい配列にコピーします。範囲(from)の初期インデックスは、0〜の範囲になければなりません
original.length
。atの値original[from]
は、コピーの最初の要素に配置されます(from == original.length
またはを除くfrom == to
)。元の配列の後続の要素の値は、コピーの後続の要素に配置されます。範囲の最後のインデックス(to
よりも大きくまたはそれに等しくなければならない)from
、より大きくてもよく、original.length
その場合には、false
インデックス以上に等しいコピーのすべての要素に配置されますoriginal.length - from
。返される配列の長さはになりますto - from
。
以下に簡単な例を示します。
/**
* @Program that Copies the specified range of the specified array into a new
* array.
* CopyofRange8Array.java
* Author:-RoseIndia Team
* Date:-15-May-2008
*/
import java.util.*;
public class CopyofRange8Array {
public static void main(String[] args) {
//creating a short array
Object T[]={"Rose","India","Net","Limited","Rohini"};
// //Copies the specified short array upto specified range,
Object T1[] = Arrays.copyOfRange(T, 1,5);
for (int i = 0; i < T1.length; i++)
//Displaying the Copied short array upto specified range
System.out.println(T1[i]);
}
}
copyOfRangeをチェックしてください。例:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
次のようなものを使用できます。 Arrays#copyOfRange
subList(int fromIndex, int toIndex)
次のような整数arrでmethodを使用できます。
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
List<Integer> partialArr = arr.subList(1, 3);
// print the subArr
for (Integer i: partialArr)
System.out.println(i + " ");
}
}
出力は次のようになります2 3
。
subList(int fromIndex, int toIndex)
メソッドが受け取る2番目の変数(var2-1)でマイナス1を実行していることに注意してください。理由は正確にはわかりませんが、これは、配列のサイズを超える可能性を減らすためです。
Arrays.copyOfRange(Thread.currentThread().getStackTrace(),1,255)
。255の代わりに、実際の長さを取得したくない場合は、Integer.MAX_VALUEを使用できません