Ce face Collections.max
Collections.max(colectie) parcurge toate elementele și îl returnează pe cel mai mare; Collections.min pe cel mai mic. Merge pe orice colecție: listă, mulțime, coadă.
Cu un Comparator alegi ce înseamnă „mare”: Collections.max(elevi, Comparator.comparingDouble(Elev::medie)) dă elevul cu media cea mai mare. Pe o colecție goală, ambele aruncă NoSuchElementException.
Parametri
| Parametru | Descriere |
|---|---|
coll |
Colecția (nevidă). |
comp |
Comparatorul folosit pentru comparare. |
Ce returnează
Elementul maxim sau minim.
Exemple
Exemplul 1: Cea mai mare și cea mai mică temperatură
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> temp = List.of(18, 23, 15, 27, 21);
System.out.println("Max: " + Collections.max(temp));
System.out.println("Min: " + Collections.min(temp));
List<String> orase = List.of("Iași", "Arad", "Constanța");
System.out.println("Ultimul alfabetic: " + Collections.max(orase));
}
}
Rezultat
Max: 27
Min: 15
Ultimul alfabetic: Iași
Exemplul 2: Elevul cu media cea mai mare
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.NoSuchElementException;
public class Main {
record Elev(String nume, double medie) {}
public static void main(String[] args) {
List<Elev> elevi = List.of(new Elev("Ana", 9.2), new Elev("Radu", 9.7), new Elev("Elena", 8.9));
Comparator<Elev> dupaMedie = Comparator.comparingDouble(Elev::medie);
System.out.println("Premiul I: " + Collections.max(elevi, dupaMedie).nume());
System.out.println("Media cea mai mică: " + Collections.min(elevi, dupaMedie));
System.out.println("Cel mai lung nume: " + Collections.max(elevi, Comparator.comparingInt(e -> e.nume().length())).nume());
try {
Collections.max(List.<Integer>of());
} catch (NoSuchElementException e) {
System.out.println("Pe listă goală: NoSuchElementException");
}
}
}
Rezultat
Premiul I: Radu
Media cea mai mică: Elev[nume=Elena, medie=8.9]
Cel mai lung nume: Elena
Pe listă goală: NoSuchElementException
Greșeli frecvente
- Apelezi
maxpe o colecție care poate fi goală. VerificăisEmpty()sau foloseștestream().max(...), care returnează unOptional. - Când mai multe elemente sunt egale cu maximul, aștepți ultimul.
maxîl returnează pe primul găsit.
Comenzi înrudite
Collections.frequency: Numără de câte ori apare o valoare într-o colecție, comparând cu equals.TreeSet.first: first() returnează cel mai mic element al unui TreeSet, last() pe cel mai mare. Aruncă excepție dacă mulțimea e goală.Stream.min / Stream.max: Găsesc cel mai mic și cel mai mare element după un Comparator; rezultatul este un Optional.Comparator.comparing: Construiește un comparator care ordonează obiectele după o proprietate: comparing(Elev::nume), comparingInt(Elev::varsta).Collections: Clasă cu metode statice gata făcute pentru colecții: sortare, amestecare, minim și maxim, numărare, liste nemodificabile.