Sortieren ein Set in Java

Hiten Kanwar 12 Oktober 2023
  1. Verwenden einer Liste zum Anzeigen einer sortierten Menge in Java
  2. Verwendung des TreeSet zur Anzeige einer sortierten Set in Java
  3. Verwendung der Funktion stream() zur Anzeige einer sortierten Set in Java
Sortieren ein Set in Java

In Java werden häufig Sets oder HashSet verwendet, um zufällig auf Elemente zuzugreifen, da auf Hash-Tabellenelemente über Hash-Codes zugegriffen wird. Hash-Code ist eine eindeutige Identität, die uns hilft, die Elemente der Hash-Tabelle zu identifizieren.

Ein HashSet ist eine ungeordnete Sammlung. Eine Menge in Java hat keine Direktzugriffsmethoden (wie get(i), wobei i ein Index dieses Elements ist), die für Sortieralgorithmen unerlässlich sind. Einfach ausgedrückt, da HashSet seine Elemente zufällig platziert hat, gibt es keine Garantie, seine Elemente aufgrund undefinierter Reihenfolge zu bestellen.

Daher müssen wir ein wenig über den Tellerrand hinaus denken, um eine Menge in Java zu sortieren. Wir werden einige Methoden besprechen, um es in eine andere Struktur zu konvertieren und zu sortieren.

Verwenden einer Liste zum Anzeigen einer sortierten Menge in Java

Eine Möglichkeit, ein HashSet zu sortieren, besteht darin, es zuerst in eine Liste umzuwandeln und dann zu sortieren.

Wir fügen die Elemente aus dem Set der Liste hinzu und verwenden dann die Funktion sort(), um sie zu sortieren.

Zum Beispiel,

import java.util.*;
public class example {
  public static void main(String[] args) {
    HashSet<Integer> number = new HashSet<>();

    // Using add() method
    number.add(3);
    number.add(6);
    number.add(4);

    // converting HashSet to arraylist
    ArrayList<Integer> al = new ArrayList<>(number);

    // sorting the list and then printing
    Collections.sort(al);
    System.out.println("Sorted list: ");
    for (int x : al) {
      System.out.print(x + " ");
    }
  }
}

Ausgabe:

Sorted list: 
3 4 6 

Verwendung des TreeSet zur Anzeige einer sortierten Set in Java

Die TreeSet-Klasse der Collections-Schnittstelle stellt uns die Funktionalität der Baumdatenstruktur zur Verfügung. Wir können das HashSet in TreeSet konvertieren, wenn wir diese Sammlung durchlaufen. Die Elemente werden in einer wohldefinierten Reihenfolge extrahiert.

TreeSet implementiert die NavigableSet-Schnittstelle, die SortedSet erweitert, die die Set-Schnittstelle weiter erweitert.

Siehe das folgende Beispiel.

import java.util.*;
public class example {
  public static void main(String[] args) {
    HashSet<Integer> number = new HashSet<>();

    // Using add() method
    number.add(3);
    number.add(6);
    number.add(4);

    // TreeSet gets the value of hashSet
    TreeSet myTreeSet = new TreeSet();
    myTreeSet.addAll(number);
    System.out.println(myTreeSet);
  }
}

Ausgabe:

[3, 4, 6]

Verwendung der Funktion stream() zur Anzeige einer sortierten Set in Java

Es gibt einen kurzen Weg, dieses Problem mit der Methode stream() zu lösen. Die Stream-API wurde in Java 8 eingeführt und ist keine Datenstruktur an sich. Es kann jedoch Objekte aus verschiedenen Sammlungen aufnehmen und basierend auf Pipeline-Methoden in der gewünschten Weise anzeigen.

Für unser Beispiel verwenden wir die Methode sorted(), um die Endsequenz sortiert darzustellen.

Siehe den Code unten.

import java.util.*;
public class example {
  public static void main(String[] args) {
    // creating hashset hs
    HashSet<Integer> hs = new HashSet<>();

    // Using add() method to add elements to hs
    hs.add(20);
    hs.add(4);
    hs.add(15);

    // before sorting hs
    hs.forEach(System.out::println);
    System.out.println(); // extra line
    // after sorting hs
    hs.stream().sorted().forEach(System.out::println); // yes
  }
}

Ausgabe:

20
4
15

4
15
20

Verwandter Artikel - Java Set