java - 如何将 Java 列表映射转换为 Scala 列表映射

标签 java scala

我有一个列表的 Java Map,

Map<String, List<String>> stringToListOfStrings = new HashMap<String, List<String>>();
        stringToListOfStrings.put("key1", Arrays.asList("k1v1", "k1v2"));
        stringToListOfStrings.put("key2", Arrays.asList("k2v1", "k2v2"));
        stringToListOfStrings.put("key3", Arrays.asList("k3v1", "k3v2"));

我想将其转换为列表的 Scala Map

Map[String,List[String]]

想知道在 JavaScala 中的转换。

我试过了this但没有得到预期的输出

在 Scala 方面,

def convertJavaToScala(stringString: java.util.HashMap[String, java.util.List[String]]) {
    val scalaMap = stringString.asScala
    scalaMap.get("key1")
    scalaMap.get("key1").foreach(println)
  }

结果是一个逗号分隔的值字符串

最佳答案

方法如下:

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))

基本上,你必须在 .asScala 之后添加 .toMap/.toList 因为 MapList 在 Scala 中是不可变的,这与 Java 不同。

关于java - 如何将 Java 列表映射转换为 Scala 列表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182485/

相关文章:

scala - 在 akka 中测试定时器事件

scala - 直接从 Spark shell 读取 ORC 文件

scala - 从Kafka上的JSON消息在Spark流中创建Spark DataFrame

scala - Scala 是否有惰性评估包装器?

scala - scalatra 中的 HEAD 请求

java - 使用名称创建 bean 时出错。结合 bean 验证和基于 Spring 的验证

java - 调用 Android 相机 Intent 时可以指定使用什么视频格式吗?

java - 在 Java 中,是可分配给已声明变量 iff 的表达式。它可以作为用相同类型声明的参数传递吗?

java - Hibernate @OneToOne child 不坚持

java - Apache mahout 推荐器 - 我应该为每个用户重新创建数据模型吗?