HOWTO · Java

Java のリンクリストの配列

この記事では、Java のリンクリストの配列を紹介します。

このページの内容

LinkedList は、定義された順序で要素を格納する順次線形データ構造です。データ構造は Collection インターフェースの一部であり、java.util パッケージに含まれています。

リンクリストには、ノード部分に格納されている要素もあります。各ノードには、要素ストレージ用のデータ部分と、次のノードのアドレスを保持するためのポインタがあります。リスト内の要素は、連続するメモリ位置に存在しません。

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つのリンクリストの配列を作成します。

リスト変数に対して、ループが実行され、各ノード上で新しいリンクリストがインスタンス化されます。したがって、for ループは、5 未満の整数値の条件で適用され、実行を開始します。内部的には、ノードの値が null であるかどうかの条件をチェックします。それ以外の場合は、新しいリンクリストノードがインスタンス化されます。

ここでも、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 クラスのパブリックコンストラクターを呼び出します。文字列値がリストに挿入されます。同様に、別の 2つのリストが作成されます。

最後に、配列リストがインスタンス化されます。形成されたリスト変数は、配列リストインスタンスに追加されます。リストインスタンスの反復は、forEach 関数を使用して行われます。さらに、メソッド参照演算子::を含む print ステートメントが追加され、配列リストに存在するインスタンスタイプの名前が表示されます。

上記のプログラムの出力を以下に示します。

[l1_value1, l1_value2][l2_value1, l2_value2][l1_value1, l1_value2] Classname
    : class java.util.LinkedList