Hay una respuesta mucho mejor que usar spliteratorUnknownSize
directamente, lo cual es más fácil y obtiene un mejor resultado. Iterable
tiene un spliterator()
método, por lo que debe usarlo para obtener su spliterator. En el peor de los casos, es el mismo código (la implementación predeterminada lo usa spliteratorUnknownSize
), pero en el caso más común, donde Iterable
ya es una colección, obtendrá un mejor spliterator y, por lo tanto, un mejor rendimiento de transmisión (tal vez incluso un buen paralelismo). También es menos código:
StreamSupport.stream(iterable.spliterator(), false)
.filter(...)
.moreStreamOps(...);
Como puede ver, obtener una transmisión de un Iterable
(vea también esta pregunta ) no es muy doloroso.