Stream.count în Java

Returnează numărul de elemente din stream, de tip long.

Sintaxă
long count()

Ce face Stream.count

count() numără elementele care ajung la capătul stream-ului. De cele mai multe ori este folosit după un filter: „câte note sunt peste 8?”.

Rezultatul este long, nu int. Dacă numărul elementelor se cunoaște direct din sursă (de exemplu o listă fără filter), Java poate să nu mai parcurgă elementele, deci acțiunile din peek sau map pot să nu ruleze.

Ce returnează

Numărul de elemente, ca long.

Exemple

Exemplul 1: Câte elemente îndeplinesc o condiție

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> note = List.of(9, 4, 7, 10, 3, 8, 10);
        long peste8 = note.stream().filter(n -> n > 8).count();
        long restante = note.stream().filter(n -> n < 5).count();
        long zeci = note.stream().filter(n -> n == 10).count();
        System.out.println("Peste 8: " + peste8);
        System.out.println("Restanțe: " + restante);
        System.out.println("Note de 10: " + zeci);
    }
}

Rezultat

Peste 8: 3
Restanțe: 2
Note de 10: 2

Exemplul 2: count poate sări peste map

Lista are 3 elemente, iar map nu schimbă numărul lor, deci Java nu mai apelează lambda. Cu filter înainte, elementele trebuie verificate.

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> nume = List.of("Ana", "Dan", "Ioana");
        long a = nume.stream().map(n -> { System.out.println("map " + n); return n; }).count();
        System.out.println("Fără filter: " + a);

        long b = nume.stream().filter(n -> n.length() == 3).map(n -> { System.out.println("map " + n); return n; }).count();
        System.out.println("Cu filter: " + b);
    }
}

Rezultat

Fără filter: 3
map Ana
map Dan
Cu filter: 2

Greșeli frecvente

  • Atribui rezultatul unui int: int n = s.count();. Nu se compilează; folosește long sau (int) cu grijă.
  • Pui logică importantă în map/peek înainte de count(). Poate fi sărită.

Comenzi înrudite

  • Stream.filter: Păstrează în stream doar elementele care îndeplinesc o condiție.
  • Collectors.groupingBy: Împarte elementele în grupuri după o cheie (oraș, grupă, prima literă) și dă un Map cheie → listă sau cheie → rezultat.
  • Stream.anyMatch: Verifică dacă cel puțin un element (anyMatch), toate (allMatch) sau niciunul (noneMatch) nu îndeplinesc o condiție.
  • IntStream.summaryStatistics: Calculează într-o singură trecere numărul, suma, minimul, maximul și media numerelor din IntStream.