【发布时间】:2021-05-25 14:48:29
【问题描述】:
我有如下的 Scala 地图:
val mapData = Map(AA1 -> 1, AA2 -> 2, AA3 -> null, AA4 -> null)
我想从最高地图值自动增加值(在上面的地图中它是“2”)。
val maxValue = mapData.valuesIterator.max
我想遍历这张地图,如果值为null,则用从最高地图值开始的自动递增值替换该值(在上面的地图中为2)。结果应该如下所示。顺序并不重要。
Map(AA1 -> 1, AA2 -> 2, AA3 -> 3, AA4 -> 4)
我尝试使用mapData.map(),但我无法在映射操作期间保留递增的值。 Scala 中还有其他方法可以实现这一点吗?
【问题讨论】:
-
如果你有
val mapData = Map(AA1 -> 1, AA2 -> 2, AA3 -> null, AA4 -> null, AA5 -> 5)会发生什么?另外,您是说顺序不重要,Map(AA1 -> 1, AA2 -> 2, AA3 -> 4, AA4 -> 3)是否有效?如果没有,顺序很重要。 -
Yes "Map(AA1 -> 1, AA2 -> 2, AA3 -> 4, AA4 -> 3)" 是一个有效的响应。如果输入是“val mapData = Map(AA1 -> 1, AA2 -> 2, AA3 -> null, AA4 -> null, AA5 -> 5)”,那么结果可以是“Map(AA1 -> 1, AA2 - > 2, AA3 -> 6, AA4 -> 7, AA5 -> 5)"