Classificar um conjunto em Java

Hiten Kanwar 12 outubro 2023
  1. Use uma lista para exibir um conjunto classificado em Java
  2. Use o TreeSet para exibir um conjunto classificado em Java
  3. Use a função stream() para exibir um conjunto classificado em Java
Classificar um conjunto em Java

Em Java, conjuntos ou HashSet são comumente usados ​​para acessar elementos aleatoriamente, já que os elementos da tabela de hash são acessados ​​usando códigos de hash. O código hash é uma identidade única que nos ajuda a identificar os elementos da tabela hash.

Um HashSet é uma coleção não ordenada. Um conjunto em Java não possui métodos de acesso aleatório (como get(i) onde i é um índice desse elemento), que são requisitos essenciais por algoritmos de classificação. Resumindo, como HashSet tem os seus elementos colocados aleatoriamente, não oferece qualquer garantia de ordenar os seus elementos devido à ordem indefinida.

Portanto, precisamos pensar um pouco fora da caixa para classificar um conjunto em Java. Discutiremos alguns métodos para convertê-lo em uma estrutura diferente e classificá-lo.

Use uma lista para exibir um conjunto classificado em Java

Uma maneira de classificar um HashSet é primeiro convertê-lo em uma lista e, em seguida, classificá-lo.

Adicionaremos os elementos do conjunto à lista e, em seguida, usaremos a função sort() para classificá-los.

Por exemplo,

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 + " ");
    }
  }
}

Produção:

Sorted list: 
3 4 6 

Use o TreeSet para exibir um conjunto classificado em Java

A classe TreeSet da interface Collections nos fornece a funcionalidade da estrutura de dados em árvore. Podemos converter o HashSet em TreeSet quando iteramos por meio desta coleção. Os elementos são extraídos em uma ordem bem definida.

TreeSet implementa a interface NavigableSet, que estende SortedSet, que estende ainda mais a interface Set.

Veja o seguinte exemplo.

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);
  }
}

Produção:

[3, 4, 6]

Use a função stream() para exibir um conjunto classificado em Java

Existe uma maneira concisa para este problema usando o método stream(). A API de fluxo foi introduzida no Java 8 e não é uma estrutura de dados em si. No entanto, ele pode pegar objetos de coleções diferentes e exibi-los da maneira desejada com base em métodos de pipeline.

Usaremos o método sorted() para exibir a seqüência final de uma maneira ordenada para nosso exemplo.

Veja o código abaixo.

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
  }
}

Produção:

20
4
15

4
15
20

Artigo relacionado - Java Set