📜  在Java创建动态数组

📅  最后修改于: 2022-05-13 01:54:50.599000             🧑  作者: Mango

在Java创建动态数组

数组是线性数据结构,这意味着类似类型的元素将以连续的方式插入。现在我们知道数组存在一个问题,需要在声明时指定大小或从Java中的用户那里获取大小,这会限制我们自己。因此, Java中出现了动态数组,其中可以在数组已满时增加其大小时添加条目。新数组的大小增加到原始数组大小的两倍。现在所有元素都保留在指定数组域大小的新数组中,并且 在新形成的数组中将其余的添加在它们之后。这个数组不断地动态增长。

程序:  

  1. 首先,我们使用私有访问说明符声明了一个 int 类型的数组。
  2. 声明计数变量。
  3. 创建一个构造函数来初始化给定长度的数组。
  4. 这里的魔法来自方法插入。
  5. 首先,在我们插入值之前,它检查数组和计数变量的长度,如果两者的大小相同,则称该数组已满。
  6. 然后我们创建一个新数组,其大小是前一个数组大小的两倍。
  7. 刚刚用前一个数组初始化了新数组,然后将其重新初始化回前一个数组。

实现:创建一个 Array 类,声明 int arr 和 int count。我们刚刚创建了一个数组,只要数组已满,数组就会调整大小。

例子

Java
// Java Program to Create a Dynamic Array
 
// Class 1
// Helper class
class Array {
 
    // Member variables of this class
    // Private access modifier
    private int arr[];
    private int count;
 
    // Note they can only be called through function
 
    // Method 1
    // Inside helper class
    // to compute length of an array
    public Array(int length) { arr = new int[length]; }
 
    // Method 2
    // Inside helper class
    // To print array
    public void printArray()
    {
 
        // Iterating over array using for loop
        for (int i = 0; i < count; i++) {
 
            // Print the elements of an array
            System.out.print(arr[i] + " ");
        }
    }
 
    // Method 3
    // Inside Helper class
    public void insert(int element)
    {
 
        if (arr.length == count) {
 
            // Creating a new array double the size
            // of array declared above
            int newArr[] = new int[2 * count];
 
            // Iterating over new array using for loop
            for (int i = 0; i < count; i++) {
                newArr[i] = arr[i];
            }
 
            // Assigning new array to original array
            // created above
            arr = newArr;
        }
 
        arr[count++] = element;
    }
}
 
// Class 2
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of Array(user-defined) class
        Array numbers = new Array(3);
 
        // Adding elements more than size specified above
        // to the array to illustrate dynamic nature
        // using the insert() method
 
        // Custom input elements
        numbers.insert(10);
        numbers.insert(30);
        numbers.insert(40);
        numbers.insert(50);
 
        // Calling the printArray() method to print
        // new array been dynamically created
        numbers.printArray();
    }
}


输出
10 30 40 50