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
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn