Sortieren ein Set in Java
- Verwenden einer Liste zum Anzeigen einer sortierten Menge in Java
-
Verwendung des
TreeSet
zur Anzeige einer sortierten Set in Java -
Verwendung der Funktion
stream()
zur Anzeige einer sortierten 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