Collections.reverse în Java

Metode utilitare: Collections Java 1.2 (swap: Java 1.4)

reverse inversează pe loc ordinea elementelor unei liste; swap schimbă între ele elementele de pe două poziții.

Sintaxă
static void reverse(List<?> list)
static void swap(List<?> list, int i, int j)

Ce face Collections.reverse

Collections.reverse(lista) întoarce lista: primul element devine ultimul și invers. Lista se modifică pe loc. Dacă vrei doar să parcurgi invers fără să modifici lista, din Java 21 există lista.reversed(), care returnează o vedere inversată.

Collections.swap(lista, i, j) schimbă elementele de pe pozițiile i și j. Pozițiile în afara listei aruncă IndexOutOfBoundsException.

Parametri

Parametru Descriere
list Lista modificată.
i, j Pozițiile elementelor schimbate (pentru swap).

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Clasament de la ultimul la primul

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

public class Main {
    public static void main(String[] args) {
        List<String> sosiri = new ArrayList<>(List.of("Ana", "Radu", "Elena", "Mihai"));
        Collections.reverse(sosiri);
        System.out.println("De la ultimul sosit: " + sosiri);
    }
}

Rezultat

De la ultimul sosit: [Mihai, Elena, Radu, Ana]

Exemplul 2: Schimbarea a doi elevi între ei

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

public class Main {
    public static void main(String[] args) {
        List<String> banci = new ArrayList<>(List.of("Ana", "Radu", "Elena", "Mihai"));
        Collections.swap(banci, 0, 3);
        System.out.println(banci);
        try {
            Collections.swap(banci, 1, 10);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Poziția 10 nu există");
        }
    }
}

Rezultat

[Mihai, Radu, Elena, Ana]
Poziția 10 nu există

Greșeli frecvente

  • Aștepți ca reverse să returneze lista inversată. Returnează void și modifică lista primită.
  • Folosești reverse ca să sortezi descrescător o listă nesortată. Întâi sortează, apoi inversează, sau sortează direct cu Comparator.reverseOrder().

Comenzi înrudite

  • List.reversed: Returnează o vedere a listei în ordine inversă; nu copiază elementele și urmărește modificările listei originale.
  • Collections.sort: Sortează o listă pe loc: crescător după ordinea naturală sau după un Comparator dat. Echivalent cu lista.sort(…).
  • Collections.shuffle: Amestecă aleatoriu elementele unei liste, pe loc. Cu un Random cu seed fix, amestecarea iese la fel la fiecare rulare.
  • List.get: get citește elementul de la o poziție; set îl înlocuiește și returnează valoarea veche.