Java数组追加元素

数组是一种存储固定大小元素的数据结构,在Java语言中,数组的长度是固定的且在创建时就确定了。然而,在实际应用中,有时候需要动态地向数组中添加新的元素,这就需要对数组进行追加操作。本文将介绍Java中实现数组追加元素的几种方法,并提供相应的代码示例。

方法一:创建新数组

最简单的方法是创建一个新的数组,并将原数组的元素复制到新数组中。然后,将新增的元素添加到新数组的末尾。

示例代码如下所示:

public class ArrayAppendExample {
    public static void main(String[] args) {
        int[] oldArray = {1, 2, 3, 4, 5};
        int[] newArray = new int[oldArray.length + 1];

        for (int i = 0; i < oldArray.length; i++) {
            newArray[i] = oldArray[i];
        }

        int newElement = 6;
        newArray[newArray.length - 1] = newElement;

        System.out.println("原数组:");
        printArray(oldArray);

        System.out.println("新数组:");
        printArray(newArray);
    }

    public static void printArray(int[] array) {
        for (int element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

运行以上代码,输出结果如下:

原数组:
1 2 3 4 5 
新数组:
1 2 3 4 5 6

这种方法的时间复杂度为O(n),其中n是原数组的长度。因为需要遍历整个原数组并复制到新数组中。另外,这种方法会占用额外的内存空间,因为需要创建一个新的数组。

方法二:使用ArrayList类

Java中的ArrayList类是一个动态数组,可以根据需要自动调整大小。使用ArrayList类可以方便地实现数组追加元素。

示例代码如下所示:

import java.util.ArrayList;
import java.util.List;

public class ArrayListAppendExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        int newElement = 6;
        list.add(newElement);

        System.out.println("数组:");
        printList(list);
    }

    public static void printList(List<Integer> list) {
        for (int element : list) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

运行以上代码,输出结果如下:

数组:
1 2 3 4 5 6

这种方法的时间复杂度取决于ArrayList类的实现,通常为O(1)。因为ArrayList类会动态调整内部数组的大小,不需要每次都创建新的数组。另外,ArrayList类还提供了许多其他有用的方法,方便对数组进行增删改查等操作。

方法三:使用System.arraycopy方法

Java中的System类提供了一个方法arraycopy,可以用来将一个数组的部分元素复制到另一个数组中。通过使用System.arraycopy方法,可以将原数组的元素复制到新数组中,并将新增的元素添加到新数组的末尾。

示例代码如下所示:

public class ArrayCopyExample {
    public static void main(String[] args) {
        int[] oldArray = {1, 2, 3, 4, 5};
        int[] newArray = new int[oldArray.length + 1];

        System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);

        int newElement = 6;
        newArray[newArray.length - 1] = newElement;

        System.out.println("原数组:");
        printArray(oldArray);

        System.out.println("新数组:");
        printArray(newArray);
    }

    public static void printArray(int[] array) {
        for (int element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

运行以上代码,输出结果如下:

原数组:
1 2 3 4 5 
新数组:
1 2 3 4 5 6

这种方法的时间复杂度为O(n),其中n是原数组的长度。因为需要遍历整个原数组并复制到新数组中