Técnicas de clasificación en Java

JavaBeginner
Practicar Ahora

Introducción

La clasificación es una operación vital en la ciencia de la computación, y Java proporciona diferentes métodos incorporados para clasificar diferentes estructuras de datos. Java tiene diferentes clases disponibles para clasificar diferentes estructuras de datos. En este laboratorio, exploraremos cómo clasificar arrays, colecciones e instancias de clases definidas por el usuario.

Clasificación de arrays

Los arrays son una estructura de datos simple que se utiliza para almacenar datos de tipos similares de manera ordenada. Podemos clasificar arrays utilizando el método sort() incorporado de la clase Arrays.

El siguiente código demuestra cómo clasificar un array utilizando el método sort():

public static void main(String[] args) {
    int[] arr = {7, 9, 1, 0, 2, 5, 6, 11};
    System.out.println("Array Antes de la Clasificación: " + Arrays.toString(arr));
    Arrays.sort(arr);
    System.out.println("Array Después de la Clasificación: " + Arrays.toString(arr));
}

Para ejecutar este código, navegue hasta el directorio ~/project en la terminal y ejecute los siguientes comandos:

javac Sorting.java
java Sorting

Este código clasificará el array en orden ascendente. Si desea clasificar un array en orden descendente, debe clasificarlo utilizando la interfaz Comparator.

Clasificación de Colecciones

Java proporciona la clase Collections que tiene un método sort() para clasificar colecciones como listas, conjuntos y mapas. El modelo de funcionamiento de esta función es similar al método sort() de la clase Arrays.

El siguiente código demuestra cómo clasificar una lista de enteros utilizando el 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("Lista antes de la clasificación: " + list);

    Collections.sort(list);
    System.out.println("Lista después de la clasificación: " + list);
}

Para ejecutar este código, navegue hasta el directorio ~/project en la terminal y ejecute los siguientes comandos:

javac Sorting.java
java Sorting

Clasificación de Conjuntos

Los conjuntos se utilizan para almacenar datos no ordenados sin duplicados. No podemos clasificar directamente los conjuntos utilizando el método sort() de la clase Collections. Sin embargo, podemos ver los datos ordenados transferiendo todos los elementos del conjunto a una lista y luego clasificando la lista.

El siguiente código demuestra cómo clasificar un conjunto de enteros utilizando el 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("Conjunto después de la clasificación: " + list);
}

Para ejecutar este código, navegue hasta el directorio ~/project en la terminal y ejecute los siguientes comandos:

javac Sorting.java
java Sorting

La salida de este código será una lista ordenada de enteros.

Clasificación de Mapas

Los mapas se utilizan para almacenar pares clave-valor. Podemos clasificar mapas en función de sus claves o valores. También se puede utilizar TreeMap para almacenar pares clave-valor en un ordenado.

El siguiente código demuestra cómo clasificar un mapa de enteros utilizando el 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("Mapa antes de la clasificación: " + map);

    // Clasificación por claves
    Map<Integer, String> sortedByKeyMap = new TreeMap<Integer, String>(map);
    System.out.println("Mapa después de la clasificación por claves: " + sortedByKeyMap);

    // Clasificación por valor
    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("Mapa después de la clasificación por valores: " + sortedByValueMap);
}

Para ejecutar este código, navegue hasta el directorio ~/project en la terminal y ejecute los siguientes comandos:

javac Sorting.java
java Sorting

Este código clasificará el mapa por sus claves y valores.

Resumen

Esta práctica demostró cómo clasificar diferentes estructuras de datos en Java. Aprendimos cómo clasificar arrays, colecciones y mapas. También aprendimos cómo clasificar objetos de clases definidas por el usuario utilizando las interfaces Comparable y Comparator. El método sort() de las clases Collections y Arrays se utilizó para clasificar listas y arrays. Finalmente, aprendimos cómo clasificar mapas en función de sus valores y claves.