【发布时间】:2015-10-04 07:21:32
【问题描述】:
我在下面给出了一个 scala 代码 sn-p:
// country code to nameToPlaces traversable
val input : Traversable[(Int, java.util.Map[String, java.util.Set[String]])] ...
val nameToPlacesMap : Map[String, Set[String]] = input.toMap.
values.
map (x => x.toSeq). // throws a class cast exception
reduce((x,y) => x ++ y).
groupBy(_._1).
mapValues(_.map(_._2).
reduce((x,y)=>x.toSet ++ y.toSet))
nameToPlacesMap 预计会整理来自所有国家/地区的所有 nameToPlaces。
但是,在运行此代码时,我得到了一个 classcastexception
java.util.HashMap cannot be cast to scala.collection.immutable.Map
我尝试添加asScala,但没有用。我也在导入import scala.collection.JavaConverters._
任何帮助将不胜感激。
注意:我不认为这个问题是通用类转换异常的重复,如下所述:请修改您的判断。
【问题讨论】:
-
您的代码无法编译(Traversable 的参数太多)。请编辑您的帖子并更正它。另外,知道你把
.asScala放在哪里会很有用。 -
试试看this
-
混合使用 Java 和 Scala 集合有什么特殊原因吗?如果你的程序只是 Scala,那么不要使用 Java 集合。
-
是的,因为输入是从 java api 获得的
-
你可以试试
input.flatMap(_._2.asScala).groupBy(_._1).mapValues(_.map(_._2.toSet).reduce(_ ++ _))吗?为此,您需要同时导入JavaConversions._和JavaConverters._。
标签: java scala classcastexception