HOWTO · Java
Java 中的連結串列陣列
本文介紹了 Java 中的連結串列陣列。
LinkedList 是按定義順序儲存元素的順序和線性資料結構。資料結構是 Collection 介面的一部分,存在於 java.util 包中。
連結串列也有元素儲存在 node 部分。每個節點都有一個 data 部分用於元素儲存,還有一個 pointer 用於儲存下一個節點的地址。列表中的元素不存在於連續的記憶體位置。
在 Java 中使用傳統陣列演示連結串列陣列
下面是使用迴圈建立連結串列陣列的程式碼塊。
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList[] list = new LinkedList[5];
for (int i = 0; i < 5; i++) {
if (list[i] == null) {
list[i] = new LinkedList();
int temp = i;
for (int j = 0; j < temp + 1; j++) {
list[i].add(j);
}
}
System.out.print(list[i]);
}
}
}
在上面的塊中,new LinkedList[5] 語句建立了一個連結串列。new 關鍵字呼叫類連結串列的公共建構函式。值 5 顯示了陣列的大小,因此我們建立了一個包含 5 個連結串列的陣列。
在列表變數上,迴圈執行以在每個節點上例項化一個新的連結串列。因此,在整數值小於 5 的條件下應用 for 迴圈開始執行。在內部,它檢查節點中的值是否為空的條件;否則,將例項化一個新的 Linked List 節點。
同樣,使用 for 迴圈來填充列表中的元素。add 方法用於將元素新增到列表的末尾。該方法來自 LinkedList 類並返回 boolean 值。如果 add 函式成功完成,它返回 true,否則返回 false。
類似地,迭代繼續,每個節點的值都被連結串列填充。迴圈內部也會列印相同的內容,以檢查節點中存在的元素。
輸出:
[0][0, 1][0, 1, 2][0, 1, 2, 3][0, 1, 2, 3, 4]
使用 Java 中的建構函式演示連結串列陣列
下面是使用 Java 8 特性和函式建立連結串列陣列的程式碼塊。
import java.util.ArrayList;
import java.util.LinkedList;
public class main {
public static void main(String[] args) {
LinkedList list1 = new LinkedList<String>();
list1.add("l1_value1");
list1.add("l1_value2");
LinkedList list2 = new LinkedList();
list2.add("l2_value1");
list2.add("l2_value2");
LinkedList list3 = new LinkedList();
list3.add("l3_value1");
list3.add("l3_value2");
ArrayList<LinkedList> arrayList = new ArrayList<LinkedList>();
arrayList.add(list1);
arrayList.add(list2);
arrayList.add(list1);
arrayList.forEach(System.out::println);
System.out.println("Classname: " + arrayList.get(0).getClass());
}
}
在上面的程式碼塊中,main 方法儲存了程式碼執行的實際邏輯。
首先,使用 new 關鍵字建立一個連結串列。關鍵字呼叫 LinkedList 類的公共建構函式。字串值被插入到列表中。同樣,建立另外兩個列表。
最後,一個陣列列表被例項化。形成的列表變數被新增到陣列列表例項中。列表例項的迭代使用 forEach 函式進行。此外,新增了帶有方法引用運算子 :: 的 print 語句以顯示陣列列表中存在的例項型別的名稱。
上面程式的輸出如下所示。
[l1_value1, l1_value2][l2_value1, l2_value2][l1_value1, l1_value2] Classname
: class java.util.LinkedList