【发布时间】:2019-12-06 08:28:25
【问题描述】:
我有一个地图列表。其中一张地图里面有另一张地图(2 级深)。我需要从最里面的地图访问一些键,最后更改值。我面临的问题是从最里面的地图中检索键。我对 Scala 很陌生,但没有运气就尝试了不同的东西。
我已将 List 展平为 Map,然后尝试检索键值。问题是,我可以打印整个内部地图,但不知道如何迭代。
下面是代码:在一个非常基本的情况下,我想从最里面的地图中检索与键对应的值;说钥匙"isStudentLoankRequested","schoolStructure"。
object ListToMaps {
def main(args: Array[String]) {
val dataInputKeysListvar = List(Map("identityKeyName" -> "MY_ID", "identityKeyValue" -> "abcd-1234-xyz"),
Map("identityKeyName" -> "OUR_ID", "identityKeyValue" -> "1234567890",
"identityInformation" -> Map("writeFrequency" -> "NEVER", "studentStatus" -> "SEP", "annualValue" -> 0,
"schoolStructure" -> "OTHER", "studentType" -> "FTS", "occupationDescription" -> "other",
"studentAccountBalanceRange" -> "string", "isStudentLoankRequested" -> "N", "schoolName" -> "myschool",
"parentsIncome" -> 100)),
Map("identityKeyName" -> "FINAL_DECISION_KEY", "identityKeyValue" -> "0000-ABCD-4567-IJKL"))
val x = dataInputKeysListvar.flatten.toMap
val y = x("identityInformation")
if (x.contains("identityInformation")){
println("value of y is" + y)
}
}
}
正如您从 print stmt 中看到的,我可以打印最内层地图的整个地图,但在迭代方面需要帮助。
【问题讨论】:
-
你到底需要用那个内部地图做什么?你累过什么没用,为什么没用?
-
需要更改一些值。例如,将“isStudentLoankRequested”->“N”改为“isStudentLoankRequested”->“NO”。
-
内部映射是可变的还是不可变的?如果是第二个,您想对更改后的地图做什么,在外部地图和列表上更新它?更改的逻辑是静态的还是动态的,例如某些输入表示字段而其他输入表示新值?
-
两者都是不可变的。我想更改值并传递给另一个程序。这是因为下游程序期望参数为“NO”(字符串)而不是“N”(布尔)
-
如果你有一个
Map[String, Object]并且你想修改地图中的值,使用可变地图可能比常规地图更容易。
标签: scala