将java.util.Map转换为Scala List [NewObject]

时间:2016-02-08 14:15:24

标签: scala

我有一个 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]?

1 个答案:

答案 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