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 Iterablede 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 Iteratorcoincide con el mismo nombre del iterator()método que devuelve un Iteratorcomo lo requiere la Iterableinterfaz. Las firmas del método coinciden. Por lo tanto, podemos convertirlo en Streama 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 .