Java Stream API에서 Collectors.counting() 메서드를 사용하면 스트림에 포함된 요소의 개수를 손쉽게 셀 수 있습니다. 이 메서드는 collect() 연산과 함께 사용되며, 결과값은 long 타입으로 반환됩니다.
아래 예제를 통해 Java 스트림 counting() 메서드의 실제 구현 방법을 살펴보겠습니다.
예제 1: 문자열 스트림의 요소 개수 세기
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
Stream<String> stream = Stream.of("Kevin", "Jofra", "Tom", "Chris", "Liam");
// count
long count = stream.collect(Collectors.counting());
System.out.println("Number of elements in the stream = "+count);
}
}출력 결과
Number of elements in the stream = 5
위 예제에서는 이름 문자열 5개로 구성된 스트림을 생성한 후, Collectors.counting()을 적용하여 전체 요소 개수인 5가 출력되었습니다.
예제 2: 정수 스트림의 요소 개수 세기
이번에는 정수(Integer) 요소로 이루어진 스트림에 동일한 방식을 적용해 보겠습니다.
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
public static void main(String[] args) {
Stream<Integer> stream = Stream.of(5, 10, 20, 40, 80, 160);
// count
long count = stream.collect(Collectors.counting());
System.out.println("Number of elements in the stream = "+count);
}
}출력 결과
Number of elements in the stream = 6
정수 6개가 담긴 스트림에서도 같은 방법으로 요소 개수 6이 정상적으로 반환되는 것을 확인할 수 있습니다.
참고: count() 메서드와의 비교
스트림의 요소 개수를 세는 또 다른 방법으로 stream.count() 메서드가 있습니다. 단순히 개수만 필요하다면 count()가 더 간결하지만, Collectors.counting()은 groupingBy() 등 다른 컬렉터와 조합하여 그룹별 개수를 집계하는 등 더 유연하게 활용할 수 있다는 장점이 있습니다.