Ce face IntStream.max
max() și min() parcurg numerele și returnează extrema. Spre deosebire de Stream.max, nu au nevoie de Comparator: numerele se compară natural.
Rezultatul este un OptionalInt, gol dacă stream-ul nu are elemente. Scoți numărul cu getAsInt() (aruncă excepție dacă e gol), orElse(valoare) sau ifPresent(...).
Ce returnează
Un OptionalInt cu valoarea maximă/minimă sau gol.
Exemple
Exemplul 1: Cea mai mare și cea mai mică temperatură
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int[] temperaturi = {14, 19, 8, 22, 17};
System.out.println("Maxima: " + IntStream.of(temperaturi).max().getAsInt() + " °C");
System.out.println("Minima: " + IntStream.of(temperaturi).min().getAsInt() + " °C");
}
}
Rezultat
Maxima: 22 °C
Minima: 8 °C
Exemplul 2: Cel mai lung nume și un stream gol
Pentru o listă goală, max() dă un OptionalInt gol, iar orElse(0) oferă o valoare implicită.
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> nume = List.of("Ana", "Constantin", "Ioana");
int celMaiLung = nume.stream().mapToInt(String::length).max().orElse(0);
System.out.println("Cel mai lung nume are " + celMaiLung + " litere");
List<String> goala = List.of();
System.out.println(goala.stream().mapToInt(String::length).max());
System.out.println(goala.stream().mapToInt(String::length).max().orElse(0));
}
}
Rezultat
Cel mai lung nume are 10 litere
OptionalInt.empty
0
Greșeli frecvente
- Ai nevoie de elementul (de exemplu numele), nu doar de lungimea maximă. Folosește
stream.max(Comparator.comparingInt(String::length)). - Apelezi
getAsInt()fără să știi sigur că stream-ul are elemente.
Comenzi înrudite
IntStream.sum: sum adună numerele din IntStream; average dă media lor ca OptionalDouble (gol dacă nu există numere).Stream.min / Stream.max: Găsesc cel mai mic și cel mai mare element după un Comparator; rezultatul este un Optional.IntStream.summaryStatistics: Calculează într-o singură trecere numărul, suma, minimul, maximul și media numerelor din IntStream.Collectors.minBy: Găsește elementul cel mai mic (minBy) sau cel mai mare (maxBy) după un Comparator; util pe grupuri, cu groupingBy.