333

Java で Integer の配列を持っています。その一部だけを使用したいと思います。Python では、この array[index:] のようなことができ、インデックスから配列を返すことを知っています。Javaでこのようなことが可能ですか。

4

9 に答える 9

542

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)
于 2012-06-12T17:29:44.097 に答える
38

配列をリストとしてラップし、そのサブリストを要求できます。

MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
于 2012-06-12T17:30:11.760 に答える
25

はい、Arrays.copyOfRangeを使用できます

ほぼ同じことを行います(コピーがあることに注意してください:初期配列は変更しません)。

于 2012-06-12T17:29:57.623 に答える
8

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]);
    }

}
于 2012-06-12T17:32:09.023 に答える
4

copyOfRangeをチェックしてください。例:

int[] arr2 = Arrays.copyOfRange(arr,0,3);
于 2012-06-12T17:29:59.417 に答える
1

次のようなものを使用できます。Arrays#copyOfRange

于 2012-06-12T17:29:59.457 に答える