Arrays.stream în Java

Creează un stream din elementele unui array, ca să le filtrezi, transformi sau aduni (sum, average, max) cu o singură expresie.

Sintaxă
static IntStream stream(int[] array)          // și LongStream, DoubleStream
static <T> Stream<T> stream(T[] array)
static IntStream stream(int[] array, int from, int to)

Ce face Arrays.stream

Arrays.stream(a) transformă un array în stream. Pentru int[] primești un IntStream, care are direct sum(), average(), max(), min(); pentru String[] sau alte obiecte primești un Stream<T> obișnuit.

Varianta cu from și to folosește doar o porțiune a array-ului. Array-ul nu se modifică; rezultatul este o valoare sau o colecție nouă. Ca să transformi un int[] în List<Integer>, scrie Arrays.stream(a).boxed().toList().

Parametri

Parametru Descriere
array Array-ul sursă.
from, to Porțiunea: from inclus, to exclus.

Ce returnează

Un IntStream/LongStream/DoubleStream sau Stream<T>.

Exemple

Exemplul 1: Statistici pe un array de note

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] note = {9, 7, 10, 4, 8, 10};
        System.out.println("Suma: " + Arrays.stream(note).sum());
        System.out.printf("Media: %.2f%n", Arrays.stream(note).average().orElse(0));
        System.out.println("Maxima: " + Arrays.stream(note).max().getAsInt());
        System.out.println("Promovați: " + Arrays.stream(note).filter(n -> n >= 5).count());
        System.out.println("Primele 3: " + Arrays.stream(note, 0, 3).boxed().toList());
    }
}

Rezultat

Suma: 48
Media: 8.00
Maxima: 10
Promovați: 5
Primele 3: [9, 7, 10]

Exemplul 2: Un array de texte prelucrat cu Stream

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String[] orase = {"iași", "cluj", "sibiu", "arad", "constanța", "brașov"};
        String rezultat = Arrays.stream(orase)
                .filter(o -> o.length() > 4)
                .map(o -> o.substring(0, 1).toUpperCase() + o.substring(1))
                .sorted()
                .collect(Collectors.joining(", "));
        System.out.println(rezultat);
    }
}

Rezultat

Brașov, Constanța, Sibiu

Greșeli frecvente

  • Apelezi max().getAsInt() pe un array gol. Aruncă NoSuchElementException; folosește orElse.
  • Folosești Stream.of(intArray) în loc de Arrays.stream. Primești un stream cu un singur element (array-ul); pentru int[] folosește Arrays.stream.

Comenzi înrudite

  • Collection.stream: Creează un Stream peste elementele colecției, ca să le filtrezi, transformi, sortezi sau aduni într-un rezultat.
  • Stream: Un șir de valori prelucrate pas cu pas: filtrezi, transformi, sortezi și aduni rezultatul, fără bucle scrise de mână.
  • Arrays.asList: Returnează o listă de mărime fixă legată de un array: poți citi și schimba elemente cu set, dar nu poți adăuga sau șterge.
  • Stream.reduce: Combină toate elementele într-o singură valoare, aplicând o operație pas cu pas (sumă, produs, maxim, concatenare).