【问题标题】:chaage value of Map scala based in key基于键更改 Map scala 的值
【发布时间】:2020-09-12 23:00:03
【问题描述】:

我有以下:

 val dynamoItem = rowAsMap.mapValues {
  v: Any => new AttributeValue().withS(v.toString)
}.asJava

我想更改 mapValues 函数并使其根据 Key 将适当的函数应用于值

所以如果密钥等于"AER" 我希望它这样做:v: Any => new AttributeValue().withN(v.toString)

对于我想要制作的其他 Key 值

 v: Any => new AttributeValue().withS(v.toString)

【问题讨论】:

    标签: scala dictionary pattern-matching


    【解决方案1】:

    我会尽可能避免使用 x._n 表示法来访问元组元素。这基本上与上面提供的答案相同,但我发现这更具可读性。

    val dynamoItem = rowAsMap.map { 
      case("AER", value) => "AER" -> new AttributeValue().withN(value.toString)
      case (key, value) => key -> new AttributeValue().withS(value.toString)
    }
    

    注意 - 我假设您正在保留键并将值替换为 new AttributeValue().withN(value.toString)new AttributeValue().withS(value.toString)

    【讨论】:

      【解决方案2】:

      如果我理解,您想转换 rowAsMap 值(即 Map() 值)。

      val dynamoItem = rowAsMap.map { item =>
        if (item._1 == "AER") 
           new AttributeValue().withN(item._2.toString)
        else 
           new AttributeValue().withS(item._2.toString)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 2013-10-21
        • 2018-12-19
        • 1970-01-01
        • 2019-04-20
        相关资源
        最近更新 更多