在 Java 中建立動態陣列
陣列是一種固定大小的資料結構,其大小一旦宣告就無法更改。動態陣列為我們提供了建立動態大小陣列的便利。我們可以相應地增加和減少這些大小,我們將在本文中討論如何製作 Java 動態陣列。
在 Java 中使用自定義邏輯建立動態陣列
在示例中,我們使用自定義邏輯,其中包括在陣列末尾或任何索引處新增元素的方法。當陣列已滿時,陣列大小增加兩倍。我們還在此過程中刪除和縮小陣列。
我們使用兩個類來測試動態陣列邏輯;第一個是 DynamicClass
,第二個是 DynamicArrayTest
類。在 DynamicArrayTest
中,我們建立了一個 int
型別陣列 intArray
和兩個名為 size
和 capacity
的 int
變數。陣列大小是其中的專案數,陣列的容量是其中的總空間。
我們建立 DynamicArrayTest
類的建構函式,並使用大小為 2
的 int
陣列初始化 intArray
。然後,我們將 size
初始化為 0
,將 capacity
初始化為 2
。最後,為了在陣列的最後位置新增一個元素,我們建立了 addElementToArray()
方法,該方法接受一個 int
元素作為引數。在這個函式中,我們首先檢查陣列的 size
和 capacity
是否相同。
如果為真,我們呼叫 increaseArraySize()
函式,因為陣列已滿。在 increaseArraySize()
方法中,我們建立了一個空的 int
陣列 tempArray
來臨時儲存陣列元素,並比較 size
和 capacity
。我們用一個陣列初始化 tempArray
,並將其大小設定為陣列當前容量的兩倍。
在 increaseArraySize()
中,我們檢查 capacity
是否大於或等於 0
。然後我們呼叫 System.arraycopy()
方法將一個陣列的元素複製到另一個陣列。在那裡,我們指定要複製的陣列、要複製的起始索引、要複製元素的陣列、目標位置以及我們想要的新陣列的大小。畢竟,我們用 tempArray
的元素重新初始化 intArray
並增加 capacity
的大小。
現在,我們建立一個方法來刪除元素並將其命名為 removeElement()
。在這個函式中,我們檢查陣列的大小
是否大於零。然後,我們用零替換陣列的最後一個元素,並將大小減一。請注意,此方法僅刪除陣列的最後一個元素。
當陣列已滿時,該陣列的容量會增加,並填充空白空間。這些空的、未使用的空間會增加記憶體使用和記憶體垃圾。為了解決這個問題,我們使用 shrinkSize()
函式刪除空索引。在這裡,我們建立一個臨時陣列並複製函式中 intArray
的所有元素,其大小與其元素相同,然後將陣列元素複製回 intArray
。
class DynamicArrayTest {
int[] intArray;
int size;
int capacity;
public DynamicArrayTest() {
intArray = new int[2];
size = 0;
capacity = 2;
}
public void addElementToArray(int a) {
if (size == capacity) {
increaseArraySize();
}
intArray[size] = a;
size++;
}
public void increaseArraySize() {
int[] tempArray = null;
if (size == capacity) {
tempArray = new int[capacity * 2];
{
if (capacity >= 0) {
System.arraycopy(intArray, 0, tempArray, 0, capacity);
}
}
}
intArray = tempArray;
capacity = capacity * 2;
}
public void shrinkSize() {
int[] temp;
if (size > 0) {
temp = new int[size];
System.arraycopy(intArray, 0, temp, 0, size);
capacity = size;
intArray = temp;
}
}
public void removeElement() {
if (size > 0) {
intArray[size - 1] = 0;
size--;
}
}
}
public class DynamicArray {
public static void main(String[] args) {
DynamicArrayTest dynamicArrayTest = new DynamicArrayTest();
dynamicArrayTest.addElementToArray(10);
dynamicArrayTest.addElementToArray(20);
dynamicArrayTest.addElementToArray(30);
dynamicArrayTest.addElementToArray(40);
dynamicArrayTest.addElementToArray(50);
System.out.println("items of intArray:");
for (int i = 0; i < dynamicArrayTest.capacity; i++) {
System.out.print(dynamicArrayTest.intArray[i] + " ");
}
System.out.println();
System.out.println("Capacity of the intArray: " + dynamicArrayTest.capacity);
System.out.println("Size of the intArray: " + dynamicArrayTest.size);
dynamicArrayTest.removeElement();
System.out.println("\nItems after removing the last element");
for (int i = 0; i < dynamicArrayTest.capacity; i++) {
System.out.print(dynamicArrayTest.intArray[i] + " ");
}
System.out.println("\nCapacity of the intArray: " + dynamicArrayTest.capacity);
System.out.println("Size of the intArray: " + dynamicArrayTest.size);
dynamicArrayTest.shrinkSize();
System.out.println("\nItems after removing unused space");
for (int i = 0; i < dynamicArrayTest.capacity; i++) {
System.out.print(dynamicArrayTest.intArray[i] + " ");
}
System.out.println("\nCapacity of the intArray: " + dynamicArrayTest.capacity);
System.out.println("Size of the intArray: " + dynamicArrayTest.size);
}
}
輸出:
items of intArray:
10 20 30 40 50 0 0 0
Capacity of the intArray: 8
Size of the intArray: 5
Items after removing the last element
10 20 30 40 0 0 0 0
Capacity of the intArray: 8
Size of the intArray: 4
Items after removing unused space
10 20 30
Capacity of the intArray: 3
Size of the intArray: 3
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn