如何使用静态方法在Java中增删改数组(不使用ArrayList)
手动实现数组操作的静态方法(不使用ArrayList)
Java数组的长度是固定的,没法直接修改原数组长度,所以所有“修改”操作都需要创建新数组来完成。下面是三个实用的数组操作静态方法,附带完整使用示例:
1. 向数组末尾添加元素
接收原数组和待添加的值,返回包含原数组所有元素+新元素的新数组:
public static int[] addElement(int[] originalArray, int value) { // 创建长度比原数组大1的新数组 int[] newArray = new int[originalArray.length + 1]; // 复制原数组元素到新数组 System.arraycopy(originalArray, 0, newArray, 0, originalArray.length); // 将新元素放到新数组最后一位 newArray[originalArray.length] = value; return newArray; }
2. 删除指定索引的元素
接收原数组和要删除的索引,返回删除后的新数组(需先校验索引合法性):
public static int[] removeElement(int[] originalArray, int index) { if (index < 0 || index >= originalArray.length) { throw new IllegalArgumentException("索引超出数组范围"); } // 创建长度比原数组小1的新数组 int[] newArray = new int[originalArray.length - 1]; // 复制索引前的元素 System.arraycopy(originalArray, 0, newArray, 0, index); // 复制索引后的元素 System.arraycopy(originalArray, index + 1, newArray, index, originalArray.length - index - 1); return newArray; }
3. 修改指定索引的元素
接收原数组、目标索引和新值,返回修改后的新数组(保持返回新数组的统一风格,也可直接修改原数组):
public static int[] modifyElement(int[] originalArray, int index, int newValue) { if (index < 0 || index >= originalArray.length) { throw new IllegalArgumentException("索引超出数组范围"); } // 复制原数组到新数组 int[] newArray = new int[originalArray.length]; System.arraycopy(originalArray, 0, newArray, 0, originalArray.length); // 修改指定索引的值 newArray[index] = newValue; return newArray; }
完整使用示例
把上述方法放到类中,在main方法中调用演示:
public class ArrayOperations { public static int[] addElement(int[] originalArray, int value) { int[] newArray = new int[originalArray.length + 1]; System.arraycopy(originalArray, 0, newArray, 0, originalArray.length); newArray[originalArray.length] = value; return newArray; } public static int[] removeElement(int[] originalArray, int index) { if (index < 0 || index >= originalArray.length) { throw new IllegalArgumentException("索引超出数组范围"); } int[] newArray = new int[originalArray.length - 1]; System.arraycopy(originalArray, 0, newArray, 0, index); System.arraycopy(originalArray, index + 1, newArray, index, originalArray.length - index - 1); return newArray; } public static int[] modifyElement(int[] originalArray, int index, int newValue) { if (index < 0 || index >= originalArray.length) { throw new IllegalArgumentException("索引超出数组范围"); } int[] newArray = new int[originalArray.length]; System.arraycopy(originalArray, 0, newArray, 0, originalArray.length); newArray[index] = newValue; return newArray; } public static void main(String[] args) { // 初始化原数组 int[] arr = {1, 2, 4, 7}; // 演示添加元素 int[] arrAfterAdd = addElement(arr, 11); System.out.print("添加元素后的数组:"); printArray(arrAfterAdd); // 输出:1, 2, 4, 7, 11 // 演示修改元素 int[] arrAfterModify = modifyElement(arr, 2, 5); System.out.print("\n修改索引2后的数组:"); printArray(arrAfterModify); // 输出:1, 2, 5, 7 // 演示删除元素 int[] arrAfterRemove = removeElement(arr, 1); System.out.print("\n删除索引1后的数组:"); printArray(arrAfterRemove); // 输出:1, 4, 7 } // 辅助方法:打印数组 private static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { if (i > 0) { System.out.print(", "); } System.out.print(array[i]); } } }
关键说明
- 所有方法都是静态的,直接通过
类名.方法名调用即可,无需创建类的实例 - 因Java数组长度不可变,所有操作都返回新数组,原数组不会被修改
- 使用
System.arraycopy高效复制数组元素,性能优于手动循环复制
内容的提问来源于stack exchange,提问作者TheCPPGuy
相关产品推荐
相关产品推荐

