Ce face Collections
Collections (cu „s” la final) nu este o colecție, ci o „cutie de unelte”: o clasă cu metode statice care primesc o colecție și fac ceva cu ea. Le apelezi cu numele clasei: Collections.sort(lista), Collections.max(note).
Metodele principale: sort, reverse, shuffle, swap (modifică ordinea unei liste); max, min, frequency, binarySearch (caută); unmodifiableList, synchronizedList (învelesc o listă); emptyList, singletonList, nCopies (creează liste speciale); addAll (adaugă mai multe valori).
Nu confunda cu Collection (fără „s”), interfața comună a listelor și mulțimilor. Pentru array-uri, echivalentul este clasa Arrays.
Ce returnează
Depinde de metodă; fiecare are pagina ei.
Exemple
Exemplul 1: Câteva unelte pe aceeași listă
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> note = new ArrayList<>(List.of(7, 10, 5, 9, 10, 8));
System.out.println("Max: " + Collections.max(note) + ", min: " + Collections.min(note));
System.out.println("De câte ori 10: " + Collections.frequency(note, 10));
Collections.sort(note);
System.out.println("Sortate: " + note);
Collections.reverse(note);
System.out.println("Inversate: " + note);
}
}
Rezultat
Max: 10, min: 5
De câte ori 10: 2
Sortate: [5, 7, 8, 9, 10, 10]
Inversate: [10, 10, 9, 8, 7, 5]
Exemplul 2: O listă protejată pentru cititori
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
private final List<String> elevi = new ArrayList<>();
List<String> getElevi() {
return Collections.unmodifiableList(elevi);
}
public static void main(String[] args) {
Main clasa = new Main();
Collections.addAll(clasa.elevi, "Ana", "Radu", "Elena");
List<String> vedere = clasa.getElevi();
System.out.println(vedere);
try {
vedere.add("Intrus");
} catch (UnsupportedOperationException e) {
System.out.println("Lista nu se poate modifica din afară");
}
}
}
Rezultat
[Ana, Radu, Elena]
Lista nu se poate modifica din afară
Greșeli frecvente
- Scrii
Collection.sort(lista)(fără „s”). Metoda nu există acolo; clasa utilitară esteCollections. - Încerci
new Collections(). Clasa nu se instanțiază; toate metodele sunt statice.
Comenzi înrudite
Collections.sort: Sortează o listă pe loc: crescător după ordinea naturală sau după un Comparator dat. Echivalent cu lista.sort(…).Collections.max: Returnează cel mai mare (max) sau cel mai mic (min) element dintr-o colecție, după ordinea naturală sau după un Comparator.Collections.shuffle: Amestecă aleatoriu elementele unei liste, pe loc. Cu un Random cu seed fix, amestecarea iese la fel la fiecare rulare.Collections.unmodifiableList: Returnează o vedere doar-pentru-citire a unei liste: cine o primește nu o poate modifica, dar schimbările originalului se văd.Arrays: Clasă cu metode statice pentru array-uri: afișare, sortare, căutare, copiere, umplere, comparare și transformare în listă sau stream.Collection: Interfața de bază pentru liste, mulțimi și cozi: metodele comune add, remove, contains, size și parcurgerea cu for-each.