Итератор против потока Java 8
Чтобы воспользоваться широким спектром методов запроса, включенных вjava.util.stream
JDK 8 Я пытаюсь разработать доменные модели, где получатели отношений с*
кратность (с нулем или более экземпляров) возвращаетStream<T>
вместоIterable<T>
или жеIterator<T>
.
Я сомневаюсь, есть ли какие-либо дополнительные накладные расходы, понесенныеStream<T>
по сравнению сIterator<T>
?
Итак, есть ли недостаток компрометации моей доменной модели сStream<T>
?
Или вместо этого я должен всегда возвращатьIterator<T>
или жеIterable<T>
и оставьте конечному пользователю решение о том, использовать поток или нет, путем преобразования этого итератора с помощьюStreamUtils
?
Заметка что возвращениеCollection
не является допустимым вариантом, потому что в этом случае большинство отношений являются ленивыми и с неизвестным размером.