tl; dr
Recién lanzado , no hay necesidad de convertir.
Cast Stream < String >
a Iterable < String >
.
Detalles
PRECAUCIÓN Consulte la Respuesta de Holger que explica los peligros del uso de un flujo respaldado Iterable
.
Sí, puedes hacer un Iterable
de a Stream
.
La solución es simple, pero no obvia. Vea esta publicación en las Preguntas frecuentes sobre Lambda de Maurice Naftalin .
El iterator()
método en BaseStream
(superclase de Stream
) que devuelve un Iterator
coincide con el mismo nombre del iterator()
método que devuelve un Iterator
como lo requiere la Iterable
interfaz. Las firmas del método coinciden. Por lo tanto, podemos convertirlo en Stream
a Iterable
, no se necesita conversión.
Haz tu aportación.
String input = "this\n" +
"that\n" +
"the_other";
Stream < String > stream = input.lines() ;
Echa eso Stream<String>
a Iterable<String>
.
Iterable< String > iterable = ( Iterable < String > ) stream ; // Cast `Stream < String >` to `Iterable < String >`.
Prueba los resultados.
for ( String s : iterable )
{
System.out.println( "s = " + s );
}
Vea este código en vivo en IdeOne.com .
s = esto
s = eso
s = el_otro
CUIDADO Tenga cuidado con el riesgo de la transmisión de respaldo Iterable
. Explicado en la respuesta correcta de Holger .