java如何截取数组
截取数组的方法
在Java中,可以通过多种方式截取数组的一部分。以下是几种常见的方法:
使用Arrays.copyOfRange方法
Arrays.copyOfRange是Java提供的一个便捷方法,用于截取数组的一部分。该方法需要指定原始数组、起始索引和结束索引。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] subArray = Arrays.copyOfRange(originalArray, 2, 6);
System.out.println(Arrays.toString(subArray)); // 输出 [3, 4, 5, 6]
}
}
使用System.arraycopy方法
System.arraycopy是一个底层方法,用于将一个数组的部分内容复制到另一个数组中。需要指定源数组、源数组起始位置、目标数组、目标数组起始位置和复制的长度。
public class Main {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] subArray = new int[4];
System.arraycopy(originalArray, 2, subArray, 0, 4);
System.out.println(Arrays.toString(subArray)); // 输出 [3, 4, 5, 6]
}
}
手动循环复制
通过循环遍历原始数组的指定范围,逐个复制元素到新数组中。这种方法虽然简单,但代码量较多。
public class Main {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int startIndex = 2;
int endIndex = 6;
int[] subArray = new int[endIndex - startIndex];
for (int i = startIndex; i < endIndex; i++) {
subArray[i - startIndex] = originalArray[i];
}
System.out.println(Arrays.toString(subArray)); // 输出 [3, 4, 5, 6]
}
}
使用Stream API(Java 8及以上)
Java 8引入的Stream API也可以用于截取数组的一部分,通过Arrays.stream方法将数组转换为流,再使用skip和limit方法截取。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] originalArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] subArray = Arrays.stream(originalArray)
.skip(2)
.limit(4)
.toArray();
System.out.println(Arrays.toString(subArray)); // 输出 [3, 4, 5, 6]
}
}
注意事项
- 使用
Arrays.copyOfRange和System.arraycopy时,需确保索引不越界,否则会抛出ArrayIndexOutOfBoundsException。 - 手动循环复制适用于需要更灵活控制的场景,但代码较为繁琐。
- Stream API提供了一种函数式编程的方式,但可能对性能有一定影响,适合处理小型数组或对性能要求不高的场景。
根据具体需求选择合适的方法,可以高效地完成数组截取操作。







