Как получить количество элементов в Stream API Java?

«Как получить количество элементов в Stream API Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Количество элементов в Stream можно получить с помощью терминальной операции count().

Пример:

import java.util.stream.Stream;

long count = Stream.of("apple", "banana", "orange")
        .count(); // Результат: 3

// Для пустого потока
long emptyCount = Stream.empty().count(); // Результат: 0

Важные особенности:

  • Возвращаемый тип: long.
  • Поведение: Операция count() является терминальной и потребляет поток.
  • С бесконечными потоками: Вызов count() на бесконечном потоке (например, Stream.generate(() -> "data")) никогда не завершится.
  • Альтернатива: Можно использовать коллектор Collectors.counting(), но прямой вызов count() обычно эффективнее.
    import java.util.stream.Collectors;
    Long count = stream.collect(Collectors.counting());