在scala.collection
,有两个非常相似的对象JavaConversions
和JavaConverters
.
我从Java调用Scala方法.我需要进行从Seq到List的转换.
我无法修改Scala方法的签名,所以我无法使用该asJavaCollection
方法scala.collection.JavaConversions._
有关如何实现这一目标的任何想法?
使用Scala 2.9.3
我使用泛型函数合并了scala Set
的scalaMap
def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B] =
(Map[A, B]() /: (for (m <- ms; kv <- m) yield kv))
{
(a, kv) =>
a + (if (a.contains(kv._1)) kv._1 -> f(a(kv._1), kv._2) else kv)
}
Run Code Online (Sandbox Code Playgroud)
这可以处理存在相同键冲突的情况.但是,我想在Scala Code中使用Java集合.我研究了一下然后发现了JavaConversions
.我导入了它并写了这个
def mergeMaps[A, B](ms: Set[Map[A, B]])(f: (B, B) => B): Map[A, B] =
(new util.HashMap[A, B] /: (for (m <- ms; kv <- m) yield kv))
{
case (a, kv) =>
a + (if …
Run Code Online (Sandbox Code Playgroud)