У меня есть фрагмент кода Scala приведен ниже:Scala: classcast исключение: java.util.HashMap не может быть приведен к scala.collection.immutable.Map
// 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._
Любая помощь будет оценена.
ПРИМЕЧАНИЕ. Я не рассматриваю этот вопрос как дубликат общего исключения класса, как указано ниже: Пожалуйста, пересмотрите свое мнение.
Ваш код не скомпилирован (слишком много аргументов для трассировки). Пожалуйста, отредактируйте свой пост и исправьте его. Кроме того, было бы полезно узнать, где вы помещаете '.asScala'. –
Попробуйте взглянуть на [это] (http://stackoverflow.com/questions/3127238/convert-java-util-mapstring-object-to-scala-collection-immutable-mapstring) –
Есть ли особая причина, по которой вы смешиваете Коллекции Java и Scala? Если ваша программа - это только Scala, тогда не используйте коллекции Java. – Jesper