¿Se garantiza Stream.count () para visitar cada elemento?

En otras palabras, ¿está garantizada la siguiente línea para imprimir?num ¿líneas?

int num = list.stream().peek(System.out::println).count();

Esta pregunta fue provocada por una discusión en los comentarios dehttps://stackoverflow.com/a/41346586/2513200

Recuerdo vagamente una discusión de que las optimizaciones que evitan la iteración podrían ser legales, pero no encontré nada concluyente durante una búsqueda rápida.

losJavaDocs para Stream.count contener esta declaración:

Este es un caso especial de una reducción y es equivalente a:
return mapToLong(e -> 1L).sum();

pero no estoy seguro de si esto proporciona alguna garantía si la transmisión puede determinar de alguna manera el resultado en cortocircuito.

Respuestas a la pregunta(1)

Su respuesta a la pregunta