Cómo ordenar una lista enlazada en Java

Ordena tu lista enlazada en Java.
Por contributor

Ordenar una lista enlazada en Java


Paso 1

Declara la lista enlazada creando un nuevo objeto LinkedList y asignándolo a una variable LinkedList. LinkedList hereda de la clase genérica List, así que cualquier método que List acepte también será aceptado por el objeto LinkedList.

""LinkedList l = new LinkedList();""


Paso 2

Añade objetos del mismo tipo (como enteros) a la lista. Estos pueden ser objetos de cualquier tipo, pero para poder ordenar la lista enlazada, deben ser todos del mismo tipo.


Paso 3

Usa el método List.addFirst para insertar nuevos objetos al inicio de la lista, así que los objetos que añadas estarán en orden inverso. Si quieres añadirlos al final de la lista, usa el método List.addLast.

""list.addFirst(1);list.addFirst(3);list.addFirst(2);""


Paso 4

Usa un iterador para iterar sobre la lista, e imprímela antes y después para ver lo que está haciendo el método de ordenación.

""for( Iterator i = list.iterator(); i.hasNext(); ) { System.out.println(i.next());}""


Ordenar usando los comparadores predeterminados y personalizados


Paso 1

Ordena la lista con el comparador predeterminado. Un comparador es un objetos que compara dos objetos. El objeto comparador predeterminado usa el operador menor que, así que la lista estará ordenada en orden ascendente. Para ordenar la lista, usa el método estático Collections.sort.

""Collections.sort(list);""


Paso 2

Ordena la lista con un comparador personalizado escribiendo una clase que implemente una interfaz de comparación y le pase una instancia como argumento de la ordenación. La clase que implementa el comparador sólo tiene que implementar el método sencillo "compare".

""public class GreaterThan implements Comparator else if(x == y) {return 0;} else {return 1;}}}""


Paso 3

Usa la llamada a Collections.sort pasándole una nueva instancia de GreaterThan como segundo argumento. Puesto que los objetos que son más grandes se ordenarán antes en la lista, la lista estará ordenada de forma descendiente en lugar de ascendente. Como alternativa, si vas a ordenar una lista de objetos de una clase personalizada que has escrito tú mismo, esa clase puede implementar la interfaz Comparable en lugar de usar una clase Comparator separada.

""Collections.sort(list, new GreaterThan());""