我在Java中有一个整数数组,我只想使用它的一部分。我知道在Python中,你可以这样做数组[index:],它从索引中返回数组。这在Java中是可能的吗?


当前回答

你可以试试:

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

系统请参见javadoc。

其他回答

在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)

是的,你可以使用Arrays.copyOfRange

它做的是同样的事情(注意有一个副本:你不改变初始数组)。

public static int[] range(int[] array, int start, int end){
        int returner[] = new int[end-start];
        for(int x = 0; x <= end-start-1; x++){
            returner[x] = array[x+start];
        }
        return returner;
    }

这是一种和Array一样的方法。copyOfRange但是没有导入任何东西

您可以将数组包装为列表,并请求它的子列表。

MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);

你可以试试:

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

系统请参见javadoc。