Ordenar lista enlazada en Java

Rashmi Patidar 12 octubre 2023
Ordenar lista enlazada en Java

Una lista vinculada en Java es una estructura de datos o una colección que permite a los usuarios crear un array dinámica en la memoria. La lista no tiene ningún tamaño predefinido. Crea nodos dinámicamente y almacena valor y referencia al siguiente nodo en una única dirección de memoria. Los elementos de la lista mantienen los valores en orden secuencial, o la lista mantiene el orden de inserción en el que se insertan los elementos.

La clasificación se define como el método de organizar los elementos en una estructura de datos en un orden definido. La disposición puede ser en orden ascendente o descendente, según el requisito. Tenga en cuenta que puede haber varios enfoques para ordenar la colección de listas.

A continuación se muestra el bloque de código para ordenar los elementos del array.

import java.text.Collator;
import java.util.Comparator;
import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<String>();
    list.add("ab");
    list.add("bb");
    list.add("aA");
    list.add("bB");
    System.out.println(list);
    list.sort(new Comparator<String>() {
      @Override
      public int compare(String s1, String s2) {
        return Collator.getInstance().compare(s1, s2);
      }
    });
    System.out.println(list);
  }
}

En el bloque de código anterior, se crea una instancia de una lista utilizando la palabra clave new. La palabra clave crea una instancia de la lista enlazada de tipos de datos String y llama al constructor internamente. Luego, la instancia de la lista llama al método add para completar los elementos de la lista. El valor se imprime para comprobar el pedido de inserción.

El método sort está presente en la interfaz List. La función ordena la lista basándose en algún comparador dado como parámetro. El comparador se acostumbra a comparar la lista de elementos pasados.

El punto que debe considerar es ordenar los valores pasados ​​y asegurarse de que sean del mismo tipo. Si los valores no son del mismo tipo o cuando los elementos no son comparables, la clase arroja ClassCastException.

La implementación interna de la ordenación se realiza utilizando el comando merge sort que es lo suficientemente eficiente y hace la comparación en el tiempo log n. Entonces se forma una instancia de new Comparator que anula el método de compare. La implementación es una forma tradicional de anular el método y proporcionar la implementación.

En su lugar, se puede utilizar una implementación de una sola línea que utilice las funciones lambda de Java 8. La interfaz es una interfaz funcional y tiene un único método para llamar. La lambda toma directamente el número de parámetros presentes en la interfaz. La representación Java 8 de una sola línea del código anterior se muestra a continuación.

list.sort((o1, o2) -> Collator.getInstance().compare(o1, o2));

La declaración real para comparar los elementos de la lista es la clase collator. Esta clase es de naturaleza abstracta y define los prototipos de los métodos. La implementación está presente en la clase abstracta que los extiende.

La clase collator compara la cadena sensible a la configuración regional. El método getInstance obtiene la instancia con el valor actual predeterminado de Locale. La función compare compara los valores basados ​​en el Collator y devuelve +1, -1 o 0, en función de los valores que son mayores, menores o iguales.

La salida del código anterior se muestra a continuación. La segunda línea representa la salida de forma ordenada. Según la secuencia ASCII de los caracteres del teclado, las letras mayúsculas se encuentran en el rango más alto (A-Z) que los alfabetos pequeños (a-z). Entonces, la lista resultante en la segunda línea imprime primero la letra minúscula bb y luego imprime bB ya que tiene alfabetos en mayúsculas.

[ab, bb, aA, bB][aA, ab, bb, bB]
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artículo relacionado - Java Linked List

Artículo relacionado - Java List