Вот способ сделать это:
import scala.collection.JavaConverters._
def convertJavaToScala(stringString: java.util.HashMap[String, java.util.List[String]]): Map[String,List[String]] = {
val scalaMap: Map[String, java.util.List[String]] = stringString.asScala.toMap
scalaMap.mapValues(_.asScala.toList)
}
И когда вы запустите:
import java.util.Arrays
val stringToListOfStrings = new java.util.HashMap[String, java.util.List[String]]()
stringToListOfStrings.put("key1", Arrays.asList("k1v1", "k1v2"))
stringToListOfStrings.put("key2", Arrays.asList("k2v1", "k2v2"))
stringToListOfStrings.put("key3", Arrays.asList("k3v1", "k3v2"))
convertJavaToScala(stringToListOfStrings)
// Displays
// Map(key1 -> List(k1v1, k1v2), key2 -> List(k2v1, k2v2), key3 -> List(k3v1, k3v2))
По сути, вы должны добавить .toMap
/ .toList
после .asScala
потому что Map
и List
неизменны в Scala, в отличие от Java.