工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java リンクリスト

Java LinkedList

このチュートリアルでは、例を使って Java LinkedList について詳しく学びます。

LinkedList Java コレクション フレームワークのクラスは、リンク リスト データ構造 (二重リンク リスト) の機能を提供します。

<図>

リンク リストの各要素は ノード と呼ばれます . 3 つのフィールドで構成されています:


Java LinkedList の作成

Java でリンク リストを作成する方法は次のとおりです。

LinkedList<Type> linkedList = new LinkedList<>();

ここで、タイプ リンクされたリストのタイプを示します。たとえば、

// create Integer type linked list
LinkedList<Integer> linkedList = new LinkedList<>();

// create String type linked list
LinkedList<String> linkedList = new LinkedList<>();

例:Java で LinkedList を作成する

import java.util.LinkedList;

class Main {
  public static void main(String[] args){

    // create linkedlist
    LinkedList<String> animals = new LinkedList<>();

    // Add elements to LinkedList
    animals.add("Dog");
    animals.add("Cat");
    animals.add("Cow");
    System.out.println("LinkedList: " + animals);
  }
}

出力

LinkedList: [Dog, Cat, Cow]

上記の例では、LinkedList を作成しました。 動物という名前 .

ここでは、add() を使用しました LinkedList に要素を追加するメソッド。 add() についてもっと学びましょう メソッドについては、このチュートリアルで後述します。


Java LinkedList の動作

リンクされたリストの要素は順番に保存されません。代わりに、リンクを介して分散して接続されています (前のページ そして次へ ).

<図>

ここでは、リンクされたリストに 3 つの要素があります。

詳細については、LinkedList データ構造をご覧ください。


Java LinkedList のメソッド

LinkedList リンクされたリストでさまざまな操作を実行できるようにするさまざまなメソッドを提供します。このチュートリアルでは、よく使用される 4 つの LinkedList 演算子について説明します。


1. LinkedList に要素を追加する

add() を使用できます メソッドを使用して、LinkedList の末尾に要素 (ノード) を追加します。たとえば、

import java.util.LinkedList;

class Main {
  public static void main(String[] args){
    // create linkedlist
    LinkedList<String> animals = new LinkedList<>();

    // add() method without the index parameter
    animals.add("Dog");
    animals.add("Cat");
    animals.add("Cow");
    System.out.println("LinkedList: " + animals);

    // add() method with the index parameter
    animals.add(1, "Horse");
    System.out.println("Updated LinkedList: " + animals);
  }
}

出力

LinkedList: [Dog, Cat, Cow]
Updated LinkedList: [Dog, Horse, Cat, Cow]

上記の例では、animals という名前の LinkedList を作成しました。 .ここでは、 add() を使用しました animals に要素を追加するメソッド .

声明に注目してください、

animals.add(1, "Horse");

ここでは、インデックス番号を使用しています パラメータ。新しい要素を追加する位置を指定するオプションのパラメーターです。

LinkedList に要素を追加する方法の詳細については、Java プログラムを参照して LinkedList に要素を追加してください。


2. LinkedList 要素へのアクセス

get() LinkedList クラスのメソッドを使用して、LinkedList から要素にアクセスします。たとえば、

import java.util.LinkedList;

class Main {
  public static void main(String[] args) {
    LinkedList<String> languages = new LinkedList<>();

    // add elements in the linked list
    languages.add("Python");
    languages.add("Java");
    languages.add("JavaScript");
    System.out.println("LinkedList: " + languages);

    // get the element from the linked list
    String str = languages.get(1);
    System.out.print("Element at index 1: " + str);
  }
}

出力

LinkedList: [Python, Java, JavaScript]
Element at index 1: Java

上記の例では、get() を使用しています。 パラメータ 1 を持つメソッド .ここで、メソッドはインデックス 1 の要素を返します .

iterator() を使用して LinkedList の要素にアクセスすることもできます そして listIterator() 方法。詳細については、Java プログラムにアクセスして LinkedList の要素にアクセスしてください。


3. LinkedList の要素を変更する

set() LinkedList の方法 クラスは、LinkedList の要素を変更するために使用されます。たとえば、

import java.util.LinkedList;

class Main {
  public static void main(String[] args) {
    LinkedList<String> languages = new LinkedList<>();

    // add elements in the linked list
    languages.add("Java");
    languages.add("Python");
    languages.add("JavaScript");
    languages.add("Java");
    System.out.println("LinkedList: " + languages);

    // change elements at index 3
    languages.set(3, "Kotlin");
    System.out.println("Updated LinkedList: " + languages);
  }
}

出力

LinkedList: [Java, Python, JavaScript, Java]
Updated LinkedList: [Java, Python, JavaScript, Kotlin]

上記の例では、languages という名前の LinkedList を作成しました。行に注意してください、

languages.set(3, "Kotlin");

ここでは、set() メソッドはインデックス 3 の要素を変更します コトリンへ .


4. LinkedList から要素を削除

remove() LinkedList のメソッド クラスは、LinkedList から要素を削除するために使用されます。たとえば、

import java.util.LinkedList;

class Main {
  public static void main(String[] args) {
    LinkedList<String> languages = new LinkedList<>();

    // add elements in LinkedList
    languages.add("Java");
    languages.add("Python");
    languages.add("JavaScript");
    languages.add("Kotlin");
    System.out.println("LinkedList: " + languages);

    // remove elements from index 1
    String str = languages.remove(1);
    System.out.println("Removed Element: " + str);

    System.out.println("Updated LinkedList: " + languages);
  }
}

出力

LinkedList: [Java, Python, JavaScript, Kotlin]
Removed Element: Python
New LinkedList: [Java, JavaScript, Kotlin]

ここでは、remove() メソッドは、インデックス番号をパラメーターとして受け取ります。そして、インデックス番号で指定された要素を削除します。

リンクリストから要素を削除する方法の詳細については、リンクリストから要素を削除する Java プログラムにアクセスしてください..


その他の方法

メソッド 説明
contains() LinkedList に要素が含まれているかどうかを確認します
indexOf() 要素が最初に出現したインデックスを返します
lastIndexOf() 要素が最後に出現したインデックスを返します
clear() LinkedList のすべての要素を削除します
iterator() LinkedList を反復処理する反復子を返します

Deque および Queue としての LinkedList

LinkedList以来 クラスは Queue および Deque インターフェースも実装しているため、これらのインターフェースのメソッドも実装できます。一般的に使用されるメソッドの一部を次に示します。

メソッド 説明
addFirst() リンクされたリストの先頭に指定された要素を追加します
addLast() リンクされたリストの最後に指定された要素を追加します
getFirst() 最初の要素を返します
getLast() 最後の要素を返します
removeFirst() 最初の要素を削除します
removeLast() 最後の要素を削除します
peek() リンクされたリストの最初の要素 (head) を返します
poll() リンクされたリストから最初の要素を返し、削除します
offer() リンクされたリストの最後に指定された要素を追加します

例:キューとしての Java LinkedList

import java.util.LinkedList;
import java.util.Queue;

class Main {
  public static void main(String[] args) {
    Queue<String> languages = new LinkedList<>();

    // add elements
    languages.add("Python");
    languages.add("Java");
    languages.add("C");
    System.out.println("LinkedList: " + languages);

    // access the first element
    String str1 = languages.peek();
    System.out.println("Accessed Element: " + str1);

    // access and remove the first element
    String str2 = languages.poll();
    System.out.println("Removed Element: " + str2);
    System.out.println("LinkedList after poll(): " + languages);

    // add element at the end
    languages.offer("Swift");
    System.out.println("LinkedList after offer(): " + languages);
  }
}

出力

LinkedList: [Python, Java, C]
Accessed Element: Python
Removed Element: Python
LinkedList after poll(): [Java, C]
LinkedList after offer(): [Java, C, Swift]

例:LinkedList を Deque として

import java.util.LinkedList;
import java.util.Deque;

class Main {
  public static void main(String[] args){
    Deque<String> animals = new LinkedList<>();

    // add element at the beginning
    animals.add("Cow");
    System.out.println("LinkedList: " + animals);

    animals.addFirst("Dog");
    System.out.println("LinkedList after addFirst(): " + animals);

    // add elements at the end
    animals.addLast("Zebra");
    System.out.println("LinkedList after addLast(): " + animals);

    // remove the first element
    animals.removeFirst();
    System.out.println("LinkedList after removeFirst(): " + animals);

    // remove the last element
    animals.removeLast();
    System.out.println("LinkedList after removeLast(): " + animals);
  }
}

出力

LinkedList: [Cow]
LinkedList after addFirst(): [Dog, Cow]
LinkedList after addLast(): [Dog, Cow, Zebra]
LinkedList after removeFirst(): [Cow, Zebra]
LinkedList after removeLast(): [Cow]

LinkedList の繰り返し

Java の for-each ループを使用して、LinkedList を反復処理できます。たとえば、

import java.util.LinkedList;

class Main {
    public static void main(String[] args) {
        // Creating a linked list
        LinkedList<String> animals = new LinkedList<>();
        animals.add("Cow");
        animals.add("Cat");
        animals.add("Dog");
        System.out.println("LinkedList: " + animals);

        // Using forEach loop
        System.out.println("Accessing linked list elements:");
        for(String animal: animals) {
            System.out.print(animal);
            System.out.print(", ");
        }
    }
}

出力

LinkedList: [Cow, Cat, Dog]
Accessing linked list elements:
Cow, Cat, Dog,

LinkedList 対。配列リスト

Java ArrayList と LinkedList の両方 List を実装します Collections のインターフェース フレームワーク。ただし、それらの間にはいくつかの違いがあります。

LinkedList ArrayList
List を実装 、 Queue 、および Deque インターフェイス。 List を実装
3 つの値を保存します (以前のアドレスデータ、 そして次のアドレス ) 1 つの位置に。 単一の位置に単一の値を格納します。
双方向リンク リストの実装を提供します。 サイズ変更可能な配列実装を提供します。
要素が追加されるたびに、prevnext アドレスが変更されました。 要素が追加されるたびに、その位置以降のすべての要素がシフトされます。
要素にアクセスするには、最初から要素まで繰り返す必要があります。 インデックスを使用して要素にランダムにアクセスできます。

注意 :Java のインターフェースを使用して LinkedList を作成することもできます。たとえば、

// create linkedlist using List
List<String> animals1 = new LinkedList<>();

// creating linkedlist using Queue
Queue<String> animals2 = new LinkedList<>();

// creating linkedlist using Deque
Deque<String> animals3 = new LinkedList<>();

ここで、LinkedList が 1 つのインターフェースを使用して作成された場合、他のインターフェースによって提供されるメソッドを使用することはできません。つまり、animals1 Queue 固有のメソッドは使用できません と Deque


Java

  1. Java オペレーター
  2. Java コメント
  3. Java for-each ループ
  4. Java 文字列
  5. Java インターフェイス
  6. Java匿名クラス
  7. Java try-with-resources
  8. Java アノテーション
  9. Java アサーション
  10. Java ベクトル
  11. Java 8 - クイックガイド