2014-09-28 107 views
1

在scala中,我怎樣才能以清晰的慣用方式從Java迭代中初始化一個scala集合?Scala初始化Java迭代集合

這裏是有點跛代碼採取了一個功能比較少的辦法:

var collection = Seq[MyClass]() 

while (iterator.hasNext) { 
    val asArray: Array[String] = iterator.next.toArray 
    val val2 = asArray(2) 
    val val3 = asArray(3) 
    collection = collection :+ new MyClass(val2, val3) 
} 

如何從一個Java集合初始化迭代發生更地道?

回答

1
import scala.collection.JavaConverters._ 

val collection = iterator.asScala.map{ x => 
    val asArray = x.toArray 
    new MyClass(asArray(2), asArray(3)) 
}.toIndexedSeq 
0

斯卡拉可以轉換,並從Java集合無縫連接,提供您已經導入轉換助手象下面這樣:

import scala.collection.JavaConversions._ 
val jl = new java.util.ArrayList[String]() 
jl.add("Hello") 
jl.add("There") 

val collection = j1.map{ x => new MyClass(x(2), x(3)) }.toList