java 如何截断数组
截断数组的方法
在Java中,截断数组可以通过多种方式实现,具体取决于需求。以下是几种常见的方法:
使用 Arrays.copyOf
Arrays.copyOf 方法可以创建一个新数组,并将原数组的前N个元素复制到新数组中:
import java.util.Arrays;
int[] originalArray = {1, 2, 3, 4, 5};
int newLength = 3; // 截断后的长度
int[] truncatedArray = Arrays.copyOf(originalArray, newLength);
// truncatedArray 结果为 [1, 2, 3]
使用 System.arraycopy
System.arraycopy 允许手动复制数组的一部分到另一个数组中:
int[] originalArray = {1, 2, 3, 4, 5};
int newLength = 3;
int[] truncatedArray = new int[newLength];
System.arraycopy(originalArray, 0, truncatedArray, 0, newLength);
// truncatedArray 结果为 [1, 2, 3]
使用 Arrays.copyOfRange
如果需要截取数组的中间部分,可以使用 Arrays.copyOfRange:
import java.util.Arrays;
int[] originalArray = {1, 2, 3, 4, 5};
int startIndex = 1; // 起始索引
int endIndex = 4; // 结束索引(不包括)
int[] truncatedArray = Arrays.copyOfRange(originalArray, startIndex, endIndex);
// truncatedArray 结果为 [2, 3, 4]
使用 List.subList(适用于列表)
如果操作的是 List,可以使用 subList 方法截取部分内容:
import java.util.ArrayList;
import java.util.List;
List<Integer> originalList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
int startIndex = 1;
int endIndex = 4;
List<Integer> truncatedList = originalList.subList(startIndex, endIndex);
// truncatedList 结果为 [2, 3, 4]
手动截断(适用于不可变数组)
对于不可变数组或需要直接操作的情况,可以手动创建新数组并填充:

int[] originalArray = {1, 2, 3, 4, 5};
int newLength = 3;
int[] truncatedArray = new int[newLength];
for (int i = 0; i < newLength; i++) {
truncatedArray[i] = originalArray[i];
}
// truncatedArray 结果为 [1, 2, 3]
注意事项
- 截断后的数组是新数组,原数组不会被修改。
- 确保截断长度不超过原数组长度,否则会抛出异常(如
ArrayIndexOutOfBoundsException)。 - 对于
List,subList返回的是原列表的视图,修改子列表会影响原列表。






