¿Cómo usar Collections.reverse() en Java para invertir una lista?

| Última modificación: 23 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

De las veces que he estado desarrollando aplicaciones en Java, hubo una que me enseñó un truco bastante útil. Me pidieron mostrar los elementos de una lista, pero en orden inverso y yo solo sabía hacerlo escribiendo un montón de código manual. Luego supe que, con Collections.reverse() en Java era mucho más sencillo de lograr. De hecho pude haberme ahorrado mucho tiempo. Aquí quiero mostrarte cómo usar esta excelente herramienta, usando unos ejemplos prácticos para invertir un ArrayList, un LinkedList y hasta un array, que a mí me sirvieron bastante.

Collections.reverse() en Java qué es

¿Qué es Collections.reverse() en Java?

Como te decía, el método Collections.reverse() en Java pertenece a la clase java.util.Collections y sirve para invertir el orden de los elementos en una lista. Lo grandioso es que es muy fácil de usar y te ahorra tiempo, porque no tienes que hacer implementaciones manuales.

Puedes pensar en este método como si tuvieras una fila de fichas de dominó colocadas en un orden específico. ¿Qué hace Collections.reverse()? toma esa fila de fichas y le da la vuelta, entonces la primera ficha ya sería la última, la segunda la penúltima, y así sucesivamente.

Sintaxis

Mira cómo es la sintaxis básica de este método:

Collections.reverse(lista);

Parámetros

Lo que hace este método es que acepta como argumento una lista que deseas invertir. Recuerda que no funciona directamente con arrays o estructuras similares, aunque más adelante te enseñaré cómo puedes lidiar con esa limitación.

Excepciones

  • UnsupportedOperationException: Se lanza si la lista o su iterador no soportan la operación de modificación.

¿Cómo usar Collections.reverse() en Java? Ejemplos prácticos

Quiero mostrarte con varios ejemplos cómo aplicar Collections.reverse() en Java en diferentes escenarios.

Invertir un ArrayList

Como ya sabes, el ArrayList es una de las estructuras más comunes en Java. Y, aunque no lo creas, invertirlo es muy sencillo:

import java.util.ArrayList;
import java.util.Collections;

public class EjemploArrayList {
public static void main(String[] args) {
ArrayList<String> colores = new ArrayList<>();
colores.add("Rojo");
colores.add("Azul");
colores.add("Verde");
colores.add("Amarillo");

System.out.println("Lista original: " + colores);

Collections.reverse(colores);

System.out.println("Lista invertida: " + colores);
}
}

Mira la salida:

Lista original: [Rojo, Azul, Verde, Amarillo]
Lista invertida: [Amarillo, Verde, Azul, Rojo]

Invertir un LinkedList

Aquí te vas a dar cuenta de que el LinkedList funciona de manera similar, porque también implementa la interfaz List.

import java.util.LinkedList;
import java.util.Collections;

public class EjemploLinkedList {
public static void main(String[] args) {
LinkedList<Integer> numeros = new LinkedList<>();
numeros.add(10);
numeros.add(20);
numeros.add(30);
numeros.add(40);

System.out.println("Lista original: " + numeros);

Collections.reverse(numeros);

System.out.println("Lista invertida: " + numeros);
}
}

Esta es la salida:

Lista original: [10, 20, 30, 40]
Lista invertida: [40, 30, 20, 10]

Invertir un Array

Ya te comenté antes que, aunque Collections.reverse() en Java no funciona directamente con arrays, lo que sí puedes hacer es usar Arrays.asList() para convertir un array a una lista y luego invertirlo.

import java.util.Arrays;
import java.util.Collections;

public class EjemploArray {
public static void main(String[] args) {
Integer[] numeros = {1, 2, 3, 4, 5};

System.out.println("Array original: " + Arrays.toString(numeros));

Collections.reverse(Arrays.asList(numeros));

System.out.println("Array invertido: " + Arrays.toString(numeros));
}
}

Mira la salida:

Array original: [1, 2, 3, 4, 5]
Array invertido: [5, 4, 3, 2, 1]

Consejos a la hora de usar Collections.reverse() en Java

Desde mi experiencia he logrado aprender unos trucos que te servirán para aprovechar al máximo este método y quiero compartirlos contigo:

  1. Usa listas mutables: No olvides que el método modifica la lista directamente, así que asegúrate de que sea modificable.
  2. Evita listas inmutables: Esto es súper importante, recuerda que si intentas usar Collections.reverse() en listas como List.of() de Java 9+, obtendrás una excepción. Así que presta mucha atención.
  3. Comprueba la compatibilidad: Yo te recomiendo siempre verificar que los iteradores de la lista soporten operaciones de modificación, para que no tengas inconvenientes.

Me parece que ya entendiste muy bien que, el método Collections.reverse() en Java es una solución práctica para invertir listas. Lo bueno es que no importa si estás trabajando con un ArrayList, un LinkedList o un array, esta fantástica herramienta te ahorrará tiempo y esfuerzo en tus proyectos.

¿Quedaste con ganas de saber más sobre Java? Tengo una excelente noticia para ti. Si quieres aprender más sobre Java y convertirte en un experto capaz de resolver problemas reales como estos que te expliqué en el post, ¡apúntate a nuestro Bootcamp de Java Full Stack en KeepCoding! En poco tiempo podrás dominar este lenguaje de programación y dar un gran paso hacia tu carrera en el sector IT.

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado