Cómo ordenar una lista en Java

A veces tenemos que ordenar una lista en Java antes de procesar sus elementos. En este tutorial, aprenderemos a ordenar una lista en el orden natural. También aprenderemos a usar nuestra propia implementación de Comparator para ordenar una lista de objetos. Java List es similar a las matrices, excepto que la longitud de la lista es dinámica y viene en el marco de Java Collection . En realidad, List es una interfaz y la mayoría de las veces usamos una de sus implementaciones como ArrayList o LinkedList, etc.

Lista de ordenamiento de Java

Aquí aprenderemos a ordenar una lista de objetos en Java. Podemos usar el método Collections.sort() para ordenar una lista en orden ascendente natural. Todos los elementos de la lista deben implementar la interfaz Comparable , de lo contrario IllegalArgumentExceptionse lanza una excepción. Veamos un ejemplo rápido para ordenar una lista de cadenas.

package com.journaldev.sort;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class JavaListSort {    /**     * This class shows how to sort ArrayList in java     * @param args     */    public static void main(String[] args) {        ListString strList = new ArrayListString();        strList.add("A");        strList.add("C");        strList.add("B");        strList.add("Z");        strList.add("E");        //using Collections.sort() to sort ArrayList        Collections.sort(strList);        for(String str: strList) System.out.print(" "+str);    }}

Como puede ver, estamos usando el método Collections.sort() para ordenar la lista de cadenas. La clase String implementa la interfaz Comparable . Salida:

Lista de objetos ordenados en Java

Veamos otro ejemplo en el que ordenaremos una lista de objetos personalizados. Tenga en cuenta que la clase debe implementar la interfaz Comparable.

package com.journaldev.sort;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class JavaSortListObject {public static void main(String[] args) {ListData dl = new ArrayList();dl.add(new Data(2));dl.add(new Data(3));dl.add(new Data(1));System.out.println("Original List::"+dl);Collections.sort(dl);System.out.println("Naturally Sorted List::"+dl);}}class Data implements ComparableData {private int id;public Data(int i) {this.id = i;}@Overridepublic int compareTo(Data d) {return this.id - d.getId();}public int getId() {return id;}@Overridepublic String toString() {return "Data{"+this.id+"}";}}

Producción:

Original List::[Data{2}, Data{3}, Data{1}]Naturally Sorted List::[Data{1}, Data{2}, Data{3}]

Ordenar una lista en Java usando Comparator

El método Collections.sort() está sobrecargado y también podemos proporcionar nuestra propia implementación de Comparator para las reglas de ordenamiento. Dado que Comparator es una interfaz funcional , podemos usar expresiones lambda para escribir su implementación en una sola línea.

Collections.sort(dl, (d1, d2) - {return d2.getId() - d1.getId();});System.out.println("Reverse Sorted List using Comparator::" + dl);

Producción:

Resumen

El método sort() de la clase Collections se utiliza para ordenar una lista en Java. Podemos ordenar una lista en orden natural, donde los elementos de la lista deben implementar la interfaz Comparable. También podemos pasar una implementación de Comparator para definir las reglas de ordenación.

Puede consultar más ejemplos en nuestro repositorio de GitHub .

Referencia: Documentación de la API

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio