Scala从Java iterable初始化集合

时间:2014-09-28 12:59:57

标签: scala

在scala中,如何以干净的惯用方式从Java迭代中初始化scala集合?

这是一个有点蹩脚的代码,采用功能较少的方法:

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迭代中初始化集合更具惯用性?

2 个答案:

答案 0 :(得分:1)

import scala.collection.JavaConverters._

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

答案 1 :(得分:0)

如果您已导入如下所示的转换助手,Scala可以无缝转换为Java集合和从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