You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用静态方法在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:16:02