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ștelongsau(int)cu grijă. - Pui logică importantă în
map/peekînainte decount(). 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.