2015-11-25 40 views
1

我有一个接收Scala流的Java应用程序。我需要将其转换为Java Stream。我怎样才能在Java中做到这一点?Java - 如何将Scala流转换为Java流

+0

目前还不清楚什么你问的头打印1。你在Scala方面有哪些类型,以及你在Java方面需要哪种类型? – Haspemulator

+0

斯卡拉方面正在创建一个Scala流,并在Java端我需要将其转换为Java输入/输出流, –

回答

4

这是一个有点绕很长的路要走,但你可以斯卡拉流转换为可迭代,到Java迭代,然后从Java迭代构建Java流:

scala> 
import java.util.stream.StreamSupport 
import scala.collection.JavaConverters._ 

def stream2javaStream[T](scalaStream: scala.Stream[T]): java.util.stream.Stream[T] = { 
    StreamSupport.stream(scalaStream.toIterable.asJava.spliterator(), false); 
} 


stream2javaStream((1 to 100).toStream) 

res0: java.util.stream.Stream[Int] = [email protected] 

虽然迂回,这不“实现”流,保持其效率。

scala> 
stream2javaStream((1 to 100).toStream.map{i => println(i); i}) 
1 
res1: java.util.stream.Stream[Int] = [email protected] 

只为流