java - 从 unwrapped() 获得的 java ArrayList 转换为 Scala 列表

标签 java scala configuration config configuration-files

语言:SCALA
我在属性文件中定义了一个map,如下所示:

dummy {
  "Key1" : ["value1","value2", "value3"]
  "Key2" : ["Hi1", "Hi2"]
  "Key3" : ["Bye1"]
}

现在,我可以找到上面 mapentryset 并将其填充到 scala 的 map 中,如下所示:

var configTrialMap: Config = config.getConfig("dummy")
val resMap = mutable.Map[String, List[String]]()
for (entry <- configTrialMap.entrySet.asScala) {
    resMap.put(entry.getKey, entry.getValue.unwrapped().toString.split(",").map(_.trim).toList)
}

但问题是这段代码看起来很笨拙,我必须使用一些正则表达式来将所有 [, ] 替换为空白字符

我已经看到了一些将 java 集合转换为 scala one 的解决方案,但它们似乎都不起作用,因为 unwrapped() 返回一个 Object 实例,我必须强制转换首先。

我尝试过玩:

  1. asScalaBuffer ( https://alvinalexander.com/scala/how-to-go-from-java-collections-convert-in-scala-interact )

  2. val javaToScalaList = entry.getValue.unwrapped().asInstanceOf[List[String]]

  3. .asScala.toList

抱歉,如果我的想法太天真了。我是 Scala 新手。

最佳答案

你可以这样做:

  import com.typesafe.config.ConfigFactory
  import scala.collection.JavaConverters._
  //load config into configTrialMap

configTrialMap.getObject("dummy")
  .keySet().asScala
  .map(k => {
    val k2 = k.replaceAll("\\.", "\".\"")  //quote all the dots in key
    ("dummy."+k2, configTrialMap.getStringList(s"dummy." + k2).asScala.toList)
  })
  .toMap

结果是:

scala.collection.immutable.Map[String,List[String]] = Map(dummy.U"."S"." Sample -> List(Bye1), dummy.Key2 -> List(Hi1, Hi2), dummy.Key1 -> List(value1, value2, value3))

编辑:(添加正则表达式替换以修复带点的路径)

要处理键中的点,您需要使用 " 字符引用它们。我已经使用执行此操作的正则表达式更新了答案。

关于java - 从 unwrapped() 获得的 java ArrayList 转换为 Scala 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786680/

相关文章:

java - 如何根据状态打印列表项?

scala - sbt 程序集错误 :deduplicate: different file contents found in io.netty.versions.properties

scala - 自动在Scala/Lift/SBT .11中重新加载文件?

amazon-web-services - 为 cloudwatchLogs 中的每个日志文件创建一个 logStream

java - 将 logback.xml 放在 Tomcat 的什么位置?

php - 在运行时使用 env() 在 Symfony 3.2 中加载外部环境参数返回未解析的值

从 HashMap 中删除元素时出现 java.util.ConcurrentModificationException

java - Apache POI Word 清理没有样式或不必要标签的 Html

java - 由 : java. lang.NoClassDefFoundError 引起:com/amazonaws/auth/BasicAWSCredentials

具有数组/向量性能特征的 Scala 流