映射是一种将数据存储为键:值对的数据结构。
语法:
Map(key->value, key->value)
在这里,我们将看到一个在Scala Map中反转键和值的程序。我们将值反转为键,将键反转为对。
因此,在此之前,我们必须确保初始映射的键和值都唯一以避免错误。
程序:
object myObject { def main(args:Array[String]) { val bikes = Map(1->"S1000RR" , 2->"R1", 3->"F4" ) println("Inital map: " + bikes) val reverse = for ((a, b) <- bikes) yield (b, a) println("Reversed map: " + reverse) } }
输出结果
Inital map: Map(1 -> S1000RR, 2 -> R1, 3 -> F4) Reversed map: Map(S1000RR -> 1, R1 -> 2, F4 -> 3)
说明:
在这里,我们声明了一个映射,然后反转了它的值。在反向变量中,我们插入了与原始映射的每一对相反的值,yield方法采用(key,value)对,并将(value,key)对返回到反向映射。
如果值不是唯一的怎么办?
有一点需要考虑的是,两个键值对应该是唯一的。但是,如果我们在值中插入重复项,则在反向映射中将删除该对。
程序:
object myObject { def main(args:Array[String]) { val bikes = Map(1->"S1000RR" , 2->"R1", 3->"F4", 4->"S1000RR" ) println("Inital map: " + bikes) val reverse = for ((a, b) <- bikes) yield (b, a) println("Reversed map: " + reverse) } }
输出结果
Inital map: Map(1 -> S1000RR, 2 -> R1, 3 -> F4, 4 -> S1000RR) Reversed map: Map(S1000RR -> 4, R1 -> 2, F4 -> 3)
因此,代码可以正常运行,但是反向键将删除对4-> S100RR以使反向键的所有键都唯一。