How can I convert a Java Iterable to a Scala Iterable?

前端 未结 3 1074
灰色年华
灰色年华 2020-12-13 03:45

Is there an easy way to convert a

java.lang.Iterable[_]

to a

Scala.Iterable[_]

?

3条回答
  •  醉梦人生
    2020-12-13 04:12

    In Scala 2.8 this became much much easier, and there are two ways to achieve it. One that's sort of explicit (although it uses implicits):

    import scala.collection.JavaConverters._
    
    val myJavaIterable = someExpr()
    
    val myScalaIterable = myJavaIterable.asScala
    

    EDIT: Since I wrote this, the Scala community has arrived at a broad consensus that JavaConverters is good, and JavaConversions is bad, because of the potential for spooky-action-at-a-distance. So don't use JavaConversions at all!


    And one that's more like an implicit implicit: :)

    import scala.collection.JavaConversions._
    
    val myJavaIterable = someExpr()
    
    for (magicValue <- myJavaIterable) yield doStuffWith(magicValue)
    

提交回复
热议问题