Verknüpfte Liste in Java sortieren

Rashmi Patidar 12 Oktober 2023
Verknüpfte Liste in Java sortieren

Eine verknüpfte Liste in Java ist eine Datenstruktur oder eine Sammlung, die es Benutzern ermöglicht, ein dynamisches Array im Speicher zu erstellen. Die Liste enthält keine vordefinierte Größe. Es erstellt Knoten dynamisch und speichert Werte und Verweise auf den nächsten Knoten in einer einzigen Speicheradresse. Die Listenelemente behalten die Werte in der sequentiellen Reihenfolge bei, oder die Liste behält die Einfügereihenfolge bei, in der die Elemente eingefügt werden.

Sortieren ist definiert als die Methode, die Elemente einer Datenstruktur in einer bestimmten Reihenfolge anzuordnen. Die Anordnung kann je nach Anforderung auf- oder absteigend erfolgen. Beachten Sie, dass es verschiedene Ansätze zum Sortieren der Listensammlung geben kann.

Unten ist der Codeblock zum Sortieren der Elemente im Array.

import java.text.Collator;
import java.util.Comparator;
import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<String>();
    list.add("ab");
    list.add("bb");
    list.add("aA");
    list.add("bB");
    System.out.println(list);
    list.sort(new Comparator<String>() {
      @Override
      public int compare(String s1, String s2) {
        return Collator.getInstance().compare(s1, s2);
      }
    });
    System.out.println(list);
  }
}

Im obigen Codeblock wird eine Liste mit dem Schlüsselwort new instanziiert. Das Schlüsselwort instanziiert die verknüpfte Liste von String-Datentypen und ruft intern den Konstruktor auf. Dann ruft die Listeninstanz die Methode add auf, um die Elemente in der Liste auszufüllen. Der Wert wird gedruckt, um den Anzeigenauftrag zu überprüfen.

Die Methode sort ist in der Schnittstelle List vorhanden. Die Funktion sortiert die Liste basierend auf einem als Parameter angegebenen Komparator. Der Komparator wird verwendet, um die Liste der übergebenen Elemente zu vergleichen.

Der Punkt, den Sie berücksichtigen sollten, besteht darin, die übergebenen Werte zu sortieren und sicherzustellen, dass sie vom gleichen Typ sein müssen. Wenn die Werte nicht vom gleichen Typ sind oder die Elemente nicht vergleichbar sind, wirft die Klasse ClassCastException.

Die interne Implementierung der Sortierung erfolgt mit dem Befehl merge sort, der effizient genug ist und den Vergleich in der log n-Zeit durchführt. So wird eine neue Comparator-Instanz gebildet, die die compare-Methode überschreibt. Die Implementierung ist eine traditionelle Methode, um Methoden zu überschreiben und die Implementierung bereitzustellen.

Stattdessen kann eine einzeilige Implementierung mit den Java 8-Lambda-Funktionen verwendet werden. Die Schnittstelle ist eine funktionale Schnittstelle und hat eine einzige Methode zum Aufrufen. Das Lambda übernimmt direkt die Anzahl der Parameter, die in der Schnittstelle vorhanden sind. Die einzeilige Java 8-Darstellung des obigen Codes wird unten gezeigt.

list.sort((o1, o2) -> Collator.getInstance().compare(o1, o2));

Die eigentliche Anweisung zum Vergleich der Elemente in der Liste ist die Klasse collator. Diese Klasse ist abstrakter Natur und definiert die Prototypen der Methoden. Die Implementierung ist in der abstrakten Klasse vorhanden, die sie erweitert.

Die Klasse collator vergleicht den locale-sensitiven String. Die Methode getInstance ruft die Instanz mit dem aktuellen Standardwert Locale ab. Die Funktion compare vergleicht die Werte anhand des Collator und gibt +1, -1 oder 0 zurück, basierend auf den Werten, die grösser bis, kleiner oder gleich sind.

Die Ausgabe des obigen Codes wird unten gezeigt. Die zweite Zeile repräsentiert die Ausgabe in geordneter Form. Entsprechend der ASCII-Reihenfolge der Zeichen auf der Tastatur fallen Großbuchstaben in den höheren Bereich (A-Z) als die kleinen Alphabete (a-z). Die resultierende Liste in der zweiten Zeile druckt also zuerst den Kleinbuchstaben bb und dann bB, da sie ein Großbuchstabenalphabet hat.

[ab, bb, aA, bB][aA, ab, bb, bB]
Rashmi Patidar avatar Rashmi Patidar avatar

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

Verwandter Artikel - Java Linked List

Verwandter Artikel - Java List