IntStream.max în Java

Returnează cel mai mare (max) sau cel mai mic (min) număr din IntStream, ca OptionalInt.

Sintaxă
OptionalInt max()
OptionalInt min()

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.