ordenar lista Java

Ordenar listas en Java: mutabilidad y criterios de comparación

Ordena números o textos y conserva la lista original cuando no deba modificarse.

Tipo: Guía práctica Lectura: 4 min Actualizado: 2026-11-03
Ejemplo visual para Ordenar una lista en Java con Comparable, Comparator y lambdas

Guía y comprobaciones

Orden natural y lista modificable

List.sort ordena la propia lista. Si la lista no permite modificaciones, la operación puede lanzar una excepción. Copiar los valores a un ArrayList deja clara la intención de obtener una versión ordenada independiente.

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Ejemplo {
    public static void main(String[] args) {
        List<Integer> original = List.of(7, 2, 5);
        List<Integer> ordenada = new ArrayList<>(original);
        ordenada.sort(Comparator.naturalOrder());
        System.out.println(ordenada); // [2, 5, 7]
        System.out.println(original); // [7, 2, 5]
        ordenada.sort(Comparator.reverseOrder());
        System.out.println(ordenada); // [7, 5, 2]
    }
}

Un criterio y un desempate

Para ordenar textos por longitud, un comparador puede extraer esa longitud. Si te importa el resultado entre textos igual de largos, añade un segundo criterio.

List<String> nombres = new ArrayList<>(List.of("Luis", "Ana", "Eva"));
nombres.sort(Comparator.comparingInt(String::length)
    .thenComparing(Comparator.naturalOrder()));
System.out.println(nombres); // [Ana, Eva, Luis]

El orden natural de String no representa automáticamente la ordenación lingüística que espera una persona en todos los idiomas. Para catálogos con reglas locales, estudia Collator y define cómo tratar mayúsculas y acentos.

Evita restar para comparar

Un comparador numérico que devuelve a - b puede desbordar. Utiliza los comparadores de tipos o Comparator.comparingInt para expresar el campo. Si hay valores nulos, decide si se rechazan o dónde se sitúan mediante un comparador preparado para ello.

Copia de lista, no de cada objeto

new ArrayList<>(original) crea otra lista, pero los objetos contenidos pueden seguir compartidos. Ordenar la copia no cambia el orden del original; modificar un objeto de la copia puede verse desde ambos.

Comprueba una lista vacía, un elemento, duplicados y varios empates. Si la selección debe mostrar los primeros resultados, aplica la misma regla de desempate cada vez para evitar que elementos equivalentes parezcan saltar de posición.

Preguntas frecuentes

¿Puedo ordenar directamente List.of?

List.of crea una lista no modificable. Para ordenarla en sitio, crea antes una lista modificable como ArrayList.

¿sort devuelve otra lista?

No. Modifica la lista sobre la que se invoca; crea una copia si necesitas conservar el orden anterior.

Documentación oficial

R

Autora de la guia

Redacción de Línea de Código

Publicación independiente de programación y trámites digitales

Guías con ejemplos y referencias oficiales para aprender programación y preparar gestiones digitales. Las solicitudes se completan en el organismo responsable.

Actualizado: 2026-11-03 Politica editorial Correcciones

Por que confiar

Contrastamos fuentes oficiales, actualizamos piezas clave y priorizamos estructura, contexto y enlazado interno por encima del relleno.

Compartir

Guarda o comparte esta guia con el enlace limpio.