Introdução
A ordenação (sorting) é uma operação vital em ciência da computação, e Java fornece diferentes métodos embutidos para ordenar várias estruturas de dados. Java possui diferentes classes disponíveis para ordenar diferentes estruturas de dados. Neste laboratório, exploraremos a ordenação de arrays, coleções e instâncias de classes definidas pelo usuário.
Ordenando Arrays
Arrays são uma estrutura de dados simples que é usada para armazenar tipos de dados semelhantes de forma ordenada. Podemos ordenar arrays usando o método sort() embutido da classe Arrays.
O código a seguir demonstra a ordenação de um array usando o método sort():
public static void main(String[] args) {
int[] arr = {7, 9, 1, 0, 2, 5, 6, 11};
System.out.println("Array Before Sorting: " + Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("Array After Sorting: " + Arrays.toString(arr));
}
Para executar este código, navegue até o diretório ~/project no terminal e execute os seguintes comandos:
javac Sorting.java
java Sorting
Este código irá ordenar o array em ordem crescente. Se você deseja ordenar um array em ordem decrescente, você precisa ordená-lo usando a interface Comparator.
Ordenando Coleções
Java fornece a classe Collections que possui um método sort() para ordenar coleções como listas, conjuntos (sets) e mapas. O modelo de operação desta função é semelhante ao método sort() da classe Arrays.
O código a seguir demonstra a ordenação de uma lista de inteiros usando o método sort():
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(6);
list.add(3);
list.add(8);
list.add(1);
list.add(9);
System.out.println("List before sorting: " + list);
Collections.sort(list);
System.out.println("List after sorting: " + list);
}
Para executar este código, navegue até o diretório ~/project no terminal e execute os seguintes comandos:
javac Sorting.java
java Sorting
Ordenando Conjuntos
Conjuntos (Sets) são usados para armazenar dados não ordenados sem duplicatas. Não podemos ordenar conjuntos diretamente usando o método sort() da classe Collections. No entanto, podemos visualizar os dados ordenados transferindo todos os elementos do conjunto para uma lista e, em seguida, ordenando a lista.
O código a seguir demonstra a ordenação de um conjunto de inteiros usando o método sort():
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
set.add(6);
set.add(3);
set.add(-2);
set.add(1);
set.add(9);
List<Integer> list = new ArrayList<Integer>(set);
Collections.sort(list);
System.out.println("Set after sorting: " + list);
}
Para executar este código, navegue até o diretório ~/project no terminal e execute os seguintes comandos:
javac Sorting.java
java Sorting
A saída deste código será uma lista ordenada de inteiros.
Ordenando Mapas
Mapas (Maps) são usados para armazenar pares chave-valor. Podemos ordenar mapas com base em suas chaves ou valores. TreeMap também pode ser usado para armazenar pares chave-valor em ordem ordenada.
O código a seguir demonstra a ordenação de um mapa de inteiros usando o método sort():
public static void main(String[] args) {
Map<Integer, String> map = new TreeMap<Integer, String>();
map.put(6, "Apple");
map.put(3, "Banana");
map.put(1, "Mango");
map.put(9, "Orange");
System.out.println("Map before sorting: " + map);
// Sorting by keys
Map<Integer, String> sortedByKeyMap = new TreeMap<Integer, String>(map);
System.out.println("Map after sorting by keys: " + sortedByKeyMap);
// Sorting by value
List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
return (o1.getValue()).compareTo(o2.getValue());
}
});
Map<Integer, String> sortedByValueMap = new LinkedHashMap<Integer, String>();
for (Map.Entry<Integer, String> entry : list) {
sortedByValueMap.put(entry.getKey(), entry.getValue());
}
System.out.println("Map after sorting by values: " + sortedByValueMap);
}
Para executar este código, navegue até o diretório ~/project no terminal e execute os seguintes comandos:
javac Sorting.java
java Sorting
Este código irá ordenar o mapa por suas chaves e valores.
Resumo
Este laboratório demonstrou como ordenar diferentes estruturas de dados em Java. Aprendemos como ordenar arrays, coleções e mapas. Também aprendemos como ordenar objetos de classes definidas pelo usuário usando as interfaces Comparable e Comparator. O método sort() das classes Collections e Arrays foi usado para ordenar listas e arrays. Finalmente, aprendemos como ordenar mapas com base em seus valores e chaves.



