在Java创建动态数组
数组是线性数据结构,这意味着类似类型的元素将以连续的方式插入。现在我们知道数组存在一个问题,需要在声明时指定大小或从Java中的用户那里获取大小,这会限制我们自己。因此, Java中出现了动态数组,其中可以在数组已满时增加其大小时添加条目。新数组的大小增加到原始数组大小的两倍。现在所有元素都保留在指定数组域大小的新数组中,并且 在新形成的数组中将其余的添加在它们之后。这个数组不断地动态增长。
程序:
- 首先,我们使用私有访问说明符声明了一个 int 类型的数组。
- 声明计数变量。
- 创建一个构造函数来初始化给定长度的数组。
- 这里的魔法来自方法插入。
- 首先,在我们插入值之前,它检查数组和计数变量的长度,如果两者的大小相同,则称该数组已满。
- 然后我们创建一个新数组,其大小是前一个数组大小的两倍。
- 刚刚用前一个数组初始化了新数组,然后将其重新初始化回前一个数组。
实现:创建一个 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