Trier un ensemble en Java
- Utiliser une liste pour afficher un ensemble trié en Java
-
Utilisez le
TreeSet
pour afficher un ensemble trié en Java -
Utilisez la fonction
stream()
pour afficher un ensemble trié en Java
En Java, les ensembles ou HashSet
sont couramment utilisés pour accéder de manière aléatoire aux éléments, car les éléments de la table de hachage sont accessibles à l’aide de codes de hachage. Le code de hachage est une identité unique qui nous aide à identifier les éléments de la table de hachage.
Un HashSet
est une collection non ordonnée. Un ensemble en Java n’a pas de méthodes d’accès aléatoire (comme get(i)
où i est un indice de cet élément), qui sont des exigences essentielles des algorithmes de tri. En termes simples, comme HashSet
a ses éléments placés au hasard, il n’offre aucune garantie de commander ses éléments en raison d’un ordre indéfini.
Par conséquent, nous devons sortir des sentiers battus pour trier un ensemble en Java. Nous allons discuter de quelques méthodes pour le convertir en une structure différente et le trier.
Utiliser une liste pour afficher un ensemble trié en Java
Un moyen de trier un HashSet
consiste d’abord à le convertir en liste, puis à le trier.
Nous allons ajouter les éléments de l’ensemble à la liste puis utiliser la fonction sort()
pour le trier.
Par exemple,
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 + " ");
}
}
}
Production:
Sorted list : 3 4 6
Utilisez le TreeSet
pour afficher un ensemble trié en Java
La classe TreeSet
de l’interface Collections
nous fournit la fonctionnalité de structure de données arborescente. Nous pouvons convertir le HashSet
en TreeSet
lorsque nous parcourons cette collection. Les éléments sont extraits dans un ordre bien défini.
TreeSet
implémente l’interface NavigableSet
, qui étend SortedSet
, qui étend encore l’interface Set
.
Voir l’exemple suivant.
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);
}
}
Production:
[3, 4, 6]
Utilisez la fonction stream()
pour afficher un ensemble trié en Java
Il existe une manière concise de résoudre ce problème en utilisant la méthode stream()
. L’API de flux a été introduite dans Java 8 et n’est pas une structure de données en soi. Cependant, il peut prendre des objets de différentes collections et les afficher de la manière souhaitée en fonction des méthodes de pipeline.
Nous utiliserons la méthode sorted()
pour afficher la séquence finale de manière triée pour notre exemple.
Voir le code ci-dessous.
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
}
}
Production:
20
4
15
4
15
20