Introducción
El ordenamiento es una operación vital en la informática, y Java proporciona diferentes métodos integrados para ordenar diversas estructuras de datos. Java cuenta con distintas clases disponibles para ordenar diferentes estructuras de datos. En este laboratorio, exploraremos cómo ordenar arreglos, colecciones e instancias de clases definidas por el usuario.
Ordenamiento de arreglos
Los arreglos son una estructura de datos sencilla que se utiliza para almacenar tipos de datos similares de forma ordenada. Podemos ordenar arreglos utilizando el método integrado sort() de la clase Arrays.
Crea o reemplaza el archivo Sorting.java en el directorio ~/project con el siguiente código:
import java.util.Arrays;
public class Sorting {
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 ejecutar este código, navega al directorio ~/project en la terminal y ejecuta los siguientes comandos:
javac Sorting.java
java Sorting
Este código ordenará el arreglo en orden ascendente. Si deseas ordenar un arreglo en orden descendente, debes hacerlo utilizando la interfaz Comparator.
Ordenamiento de colecciones
Java proporciona la clase Collections, la cual cuenta con un método sort() para ordenar colecciones como listas, conjuntos (sets) y mapas. El modelo de funcionamiento de esta función es similar al método sort() de la clase Arrays.
Crea o reemplaza el archivo Sorting.java en el directorio ~/project con el siguiente código:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Sorting {
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 ejecutar este código, navega al directorio ~/project en la terminal y ejecuta los siguientes comandos:
javac Sorting.java
java Sorting
Ordenamiento de conjuntos (Sets)
Los conjuntos (Sets) se utilizan para almacenar datos no ordenados sin duplicados. No podemos ordenar conjuntos directamente utilizando el método sort() de la clase Collections. Sin embargo, podemos visualizar los datos ordenados transfiriendo todos los elementos del conjunto a una lista y luego ordenando dicha lista.
Crea o reemplaza el archivo Sorting.java en el directorio ~/project con el siguiente código:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Sorting {
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 ejecutar este código, navega al directorio ~/project en la terminal y ejecuta los siguientes comandos:
javac Sorting.java
java Sorting
El resultado de este código será una lista de enteros ordenada.
Ordenamiento de mapas (Maps)
Los mapas (Maps) se utilizan para almacenar pares clave-valor. Podemos ordenar mapas basándonos en sus claves o en sus valores. TreeMap también puede utilizarse para almacenar pares clave-valor en un orden específico.
Crea o reemplaza el archivo Sorting.java en el directorio ~/project con el siguiente código:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class Sorting {
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 ejecutar este código, navega al directorio ~/project en la terminal y ejecuta los siguientes comandos:
javac Sorting.java
java Sorting
Este código ordenará el mapa según sus claves y sus valores.
Resumen
Este laboratorio demostró cómo ordenar diferentes estructuras de datos en Java. Aprendimos a ordenar arreglos, colecciones y mapas. También aprendimos a ordenar objetos de clases definidas por el usuario utilizando las interfaces Comparable y Comparator. Se utilizaron los métodos sort() de las clases Collections y Arrays para ordenar listas y arreglos. Finalmente, aprendimos a ordenar mapas basándonos en sus valores y claves.



