哦,Java 数组。它们是数以百计的初学者软件开发人员强烈爱恨的对象。向已经初始化的数组添加元素是不可能的,他们说......实际上,这是可能的,但不是经典意义上的......而且它不是很方便。向已初始化的数组添加新元素是一种技巧。然而,这些技巧可以在面试中派上用场……有时在程序员的工作中也能派上用场。为确保您喜欢使用数据类型并知道如何高效地使用它,我们编写了一份关于向 Java 数组添加新元素的指南。除了仔细阅读理论和代码示例外,请务必检查并完成帖子中的练习题。 如何在 Java 中向数组添加新元素 - 1

Java中的数组是什么

让我们回顾一下数组是什么以及如何在 Java 中创建它。如果您还记得这一点,请随时跳到下一个副标题“将新元素添加到 Java 数组的 5 种方法”。Oracle 的官方 Java 文档说数组是属于同一数据类型的一系列值。 一组整数是Java 中数组 的完美示例。您定义的所有值在数组中都有一个特定位置,称为 索引 。下面是声明和初始化数组的方法: int[] myArray = new int[10]; int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10} 在第一种情况下,我们定义了一个数组 myArray 并让 Java 为 10 个元素的数组分配空间,在第二个 myArray1 中,我们立即向其中输入 10 个值。在任何一种情况下,都不能简单地将元素 11 推入数组。要对数组执行操作,开发人员会操纵数组包含的值的索引。我们应该做什么?让我们来看看最常见的添加到数组的方法。

向 Java 数组添加新元素的 5 种方法

好吧,这里是我们让不可变看起来可变的技巧。
  • 将数组转换为列表
  • 创建一个容量更大的新数组,并向数组中添加新元素
  • 实施 System.arraycopy()
  • 使用 Apache Commons 复制数组
  • 应用 ArrayCopyOf() 方法
  • 让我们仔细看看这些向数组添加元素的方法。

    1. 将数组转换为列表

    由于我们不能直接向数组添加新元素,下一个最好的办法是将它们转换为列表,添加新元素,然后将值重新转换回数组。将数组转换为列表的第一种方法是使用 asList() 创建一个新的 ArrayList。成功转换值范围后,使用 ListAdd() 插入值。一旦不再需要编辑数组,就可以借助 toArray() 方法将其转换回原始数据类型。对于所有的方法和转换,一开始这似乎令人困惑。让我们看一下使用 asList() 清除问题的示例。 // Code for adding Java arrays to a program import java.lang.*; import java.util.*; class ArrayDemo{ //Let’s add a new element to an array public static Integer[] addX(Integer myArray[], int x) { int i; //turn array into ArrayList using asList() method List arrList = new ArrayList ( Arrays.asList(myArray)); // adding a new element to the array arrList.add(x); // Transforming the ArrayList into an array myArray = arrList.toArray(myArray); return myArray; public static void main(String[] args) { int i; //initial array Integer myArray[] = { 0, 1, 2, 45, 7, 5, 17}; //print the initial array out System.out.println("Initial Array: " + Arrays.toString(myArray)); //element to be added int x = 28; // call the method to add x in myArray myArray = addX(myArray, x); // print the updated array out System.out.println("Array with " + x + " added: " + Arrays.toString(myArray)); 初始数组:[0, 1, 2, 45, 7, 5, 17] 添加 28 的数组:[0, 1, 2, 45, 7, 5, 17, 28]