Scala创建不可变嵌套地图

问题描述 投票:0回答:1

我在这里有情况

我有两个约束

val keyMap = "anrodiApp,key1;iosApp,key2;xyz,key3"
val tentMap = "androidApp,tenant1; iosApp,tenant1; xyz,tenant2"

所以我要添加的是创建一个这样的嵌套不可变嵌套地图tenant1->(andoidiApp-> key1,iosApp-> key2),租户2->(xyz-> key3)

因此,基本上想按租户分组并创建keyMap的地图

这是我尝试过的,但是使用了我想要的可变映射来完成,有没有一种方法可以使用固定映射来创建它?>

case class TenantSetting() {
  val requesterKeyMapping = new mutable.HashMap[String, String]()
}

val requesterKeyMapping = keyMap.split(";")
      .map { keyValueList => keyValueList.split(',')
        .filter(_.size==2)
        .map(keyValuePair => (keyValuePair[0],keyValuePair[1]))
        .toMap
      }.flatten.toMap

    val config = new mutable.HashMap[String, TenantSetting]

    tentMap.split(";")
      .map { keyValueList => keyValueList.split(',')
        .filter(_.size==2)
        .map { keyValuePair =>
          val requester = keyValuePair[0]
          val tenant = keyValuePair[1]
          if (!config.contains(tenant)) config.put(tenant, new TenantSetting)
          config.get(tenant).get.requesterKeyMapping.put(requester, requesterKeyMapping.get(requester).get)
        }
      }

[我有一个情况,我有两个约束val keyMap =“ anrodiApp,key1; iosApp,key2; xyz,key3” val tentMap =“ androidApp,tenant1; iosApp,tenant1; xyz,tenant2”所以我要添加的是创建一个...

scala nested maps immutability
1个回答
0
投票

将字符串分解为映射的逻辑可以相同,因为它们具有相同的语法。

© www.soinside.com 2019 - 2024. All rights reserved.