【发布时间】:2018-10-12 20:35:55
【问题描述】:
语言:SCALA
我的属性文件中有一个map 定义为:
dummy {
"Key1" : ["value1","value2", "value3"]
"Key2" : ["Hi1", "Hi2"]
"Key3" : ["Bye1"]
}
现在,我可以为上面的map 找到entryset 并将其填入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 的解决方案,但它们似乎都没有工作,因为 unwrapped() 返回一个 Object 实例,我必须先转换它。
我试过玩:
asScalaBuffer(https://alvinalexander.com/scala/how-to-go-from-java-collections-convert-in-scala-interact)val javaToScalaList = entry.getValue.unwrapped().asInstanceOf[List[String]]-
.asScala.toList
对不起,如果太天真了。我是 scala 的新手。
【问题讨论】:
-
如果
configTrialMap是一个java map(比如说java.util.HashMap),那么你可以通过configTrialMap.asScala简单地获取Scala map -
@jrook 不,它不是 Java 地图。它是一个配置对象。我可能没明白你的意思?您能否详细说明您要求进行哪些更改...
-
能否请您添加有关 Config 类的详细信息?它的完全限定名称是什么? (名称包括类的整个路径)。既然你说它是
map,我认为它可能是java.util.HashMap。如果不正确,那是什么地图? -
它是
com.typesafe.config.Config。当我说它是一张地图时,我的意思是在配置文件中定义的地图(我想转换为实际 scala 地图的虚拟地图)希望它能帮助@jrook
标签: java scala configuration config configuration-files