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


当前回答

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

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

其他回答

你可以在整数arr上使用subList(int fromIndex, int toIndex)方法,就像这样:

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)方法对它接收到的第二个变量(var2 - 1)执行- 1,我不知道确切的原因,但这就是发生的事情,可能是为了减少超出数组大小的机会。

查看copyOfRange;例子:

int[] arr2 = Arrays.copyOfRange(arr,0,3);

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

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

是的,你可以使用Arrays.copyOfRange

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

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