Java で Integer の配列を持っています。その一部だけを使用したいと思います。Python では、この array[index:] のようなことができ、インデックスから配列を返すことを知っています。Javaでこのようなことが可能ですか。
9 に答える
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)
配列をリストとしてラップし、そのサブリストを要求できます。
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
ほぼ同じことを行います(コピーがあることに注意してください:初期配列は変更しません)。
Java 1.6 以降を使用している場合は、 を使用Arrays.copyOfRange
して配列の一部をコピーできます。javadoc から:
指定された配列の指定された範囲を新しい配列にコピーします。範囲 (開始点) の初期インデックスは、0 から までの間にある必要があります
original.length
。値 atoriginal[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