我有一个 java.util.Map [String,MyObject],并且想要创建一个Scala List [MyNewObject],该列表由具有一些特殊值的地图的alle条目组成。
我找到了一条路,但是,这真的很难看:
val result = ListBuffer[MyNewObject]()
myJavaUtilMap.forEach
(
(es: Entry[String, MyObject]) =>
{ result += MyNewObject(es.getKey(), ey.getValue().getMyParameter); println("Aa")}
)
如何摆脱println(" Aa")?只是删除没有帮助,因为foreach需要一个消费者,但+ =操作产生一个列表....
有没有更优雅的方法将java.util.Map转换为List [MyNewObject]?
答案 0 :(得分:3)
Scala有一些转换可以为您提供Java集合上Scala集合API的所有优秀方法:
import collection.JavaConversions._
val result = myJavaUtilMap.map{
case (k,v) => MyNewObject(k, v.getMyParameter)
}.toList
顺便说一下:要定义一个返回Unit的函数,你可以显式指定返回类型:
val f = (x: Int) => x: Unit