从unwrapped()获取的java ArrayList转换为Scala list

从unwrapped()获取的java ArrayList转换为Scala list,java,scala,configuration,config,configuration-files,Java,Scala,Configuration,Config,Configuration Files,朗:斯卡拉 我的属性文件中定义了一个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[Str

朗:斯卡拉
我的属性文件中定义了一个
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)
}
var configTrialMap:Config=Config.getConfig(“虚拟”)
val resMap=mutable.Map[String,List[String]]()
对于(条目您可以执行以下操作:

  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))
编辑:(添加正则表达式替换以用点固定路径)


要处理键中的点,您需要使用
字符引用它们。我已经用一个正则表达式更新了答案。如果
configTrialMap
是一个java映射(比如
java.util.HashMap
),然后您可以通过
configTrialMap.asScala
@jrook No获取Scala映射。它不是一个java映射。它是一个配置对象。我可能不明白您的意思。您能否详细说明您要求进行的更改……您能否添加有关配置类的详细信息?它的完全限定名是什么?(名称包括类的整个路径)。由于您声明它是一个
map
,我假设它可能是一个
java.util.HashMap
。如果这不正确,那么它是什么类型的映射?它是
com.typesafe.config.config
。当我说它是一个映射时,我的意思是在配置文件中定义的映射(一个虚拟地图,我想转换成实际的scala地图)希望它有助于@jrookPerfect先生:)我能够成功地使用您的逻辑,并根据一些其他要求相应地调整它来创建
map[String,String]
的地图。再次感谢您,如果密钥类似于“U.S.Sample”“然后它失败了,有什么解决办法吗?-我试着用引号括起来,包装在object下面-但没有一个奏效。在制作地图和使用
getString()
方法时也尝试了
U”“,“S”“,”和转义引号,但运气不好,所以farThanks兄弟,我很快就会尝试,现在就回家了:)它有效,但当我有了一些“运行时随机值”,并想在map的
keyset()
中找到它,然后首先我必须对“运行时随机值”使用相同的正则表达式。这是一种hack,但不是clean,还有其他建议吗?@JeetendraAhuja,这是另一个问题,这很容易用
finalConfigTrial.map{case(k,v)=>(k.replace(“”“”,“”),v)之类的东西解决