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