Java Stream count()
May 25, 2020
This page will walk through Stream.count()
method example. The count()
method returns the count of elements in this stream. The count()
method is the special case of stream reduction.
Find the
count()
method declaration from Java doc.
long count()
The
count()
returns the count of elements in this stream.
The
count()
is the stream terminal operation. Stream operations are divided into intermediate and terminal operations and are combined to form stream pipelines. Intermediate operations are lazy operations such as filter()
method and they actually does not perform any filtering instead they create a new stream and on traversal of initial stream they contain only those elements which matches the given predicate. The traversal of pipeline stream takes place only when the terminal operation such as count()
is executed.
Example-1: Find the list of numbers.
List<Integer> numList = Arrays.asList(42, 44, 43, 41);
count()
method returns the count of elements in the stream.
long c = numList.stream().count();
Now let us use the
filter
method with stream and then count the elements.
long c = numList.stream().filter(e -> e % 2 == 0).count();
The
count()
is the special case of stream reduction. Find the code to get count without using count()
method.
long c = numList.stream().mapToLong(e -> 1L).sum();
Example-2: Find the list of names.
List<String> strList = Arrays.asList("Mohit", "Nilesh", "Mahesh");
count()
on the stream of the list.
long c = strList.stream().count();
Now use the
filter
on the stream of string and count it.
long c = strList.stream().filter(e -> e.startsWith("M")).count();
As we know that
count()
is the special case of stream reduction. Let us find the count without using count()
method.
long c = strList.stream().filter(e -> e.startsWith("M")).mapToLong(e -> 1L).sum();
Example-3: In this example we have a list of objects. We will filter the stream of list according to given condition and then count the elements.
CountDemo.java
package com.concretepage; import java.util.Arrays; import java.util.List; public class CountDemo { public static void main(String[] args) { List<User> users = Arrays.asList( new User("Vikas", 30), new User("Krishna", 29), new User("Virat", 30), new User("Mahesh", 30) ); long c1 = users.stream().filter(u -> u.getUserName().startsWith("V")).count(); System.out.println(c1); //Output: 2 long c2 = users.stream().filter(u -> u.getAge() == 30).count(); System.out.println(c2); //Output: 3 } } class User { private String userName; private int age; public User(String userName, int age) { this.userName = userName; this.age = age; } //Sets and Gets }
2 3