Iterador versus Fluxo de Java 8

Para tirar proveito da ampla variedade de métodos de consulta incluídos nojava.util.stream do Jdk 8, tentei projetar modelos de domínio em que getters de relacionamento com* multiplicidade (com zero ou mais instâncias) retorna umStream<T>, em vez de umIterable<T> ouIterator<T>.

Minha dúvida é se há alguma sobrecarga adicional incorrida peloStream<T> em comparação com oIterator<T>?

Portanto, existe alguma desvantagem de comprometer meu modelo de domínio com umStream<T>?

Ou, em vez disso, devo sempre retornar umIterator<T> ouIterable<T>e deixe ao usuário final a decisão de optar por usar ou não um fluxo, convertendo esse iterador com oStreamUtils?

Nota que retornando umCollection não é uma opção válida porque, neste caso, a maioria dos relacionamentos é preguiçosa e com tamanho desconhecido.

questionAnswers(2)

yourAnswerToTheQuestion