Classificar um conjunto em Java
- Use uma lista para exibir um conjunto classificado em Java
-
Use o
TreeSet
para exibir um conjunto classificado em Java -
Use a função
stream()
para exibir um conjunto classificado 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