基于键更改Map scala的值

chaage value of Map scala based in key

我有以下内容:

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

我想更改 mapValues 函数并使其将适当的函数应用于基于键的值

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

我想为 Key 的其他值设置

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

据我了解,您想转换 rowAsMap 值(即 Map() 值)。

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

我会尽可能避免使用 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)

替换值