2015-11-25 44 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] 

只爲流