Trier un ensemble en Java

Hiten Kanwar 12 octobre 2023
  1. Utiliser une liste pour afficher un ensemble trié en Java
  2. Utilisez le TreeSet pour afficher un ensemble trié en Java
  3. Utilisez la fonction stream() pour afficher un ensemble trié en Java
Trier un ensemble 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

Article connexe - Java Set