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.