Scala Map
Map 是一组键值对。换句话说,它类似于字典。键总是唯一的,而值不需要唯一。键值对可以有任何数据类型。然而,一旦使用任何键和值的数据类型,必须始终保持一致。地图分为两种类型:可变的和不可变的。 默认情况下,Scala使用不可变地图。为了使用可变地图,我们必须显式地导入scala.collection.mutable.Map类。
**如何创建Scala地图 **
根据我们的需求和地图的性质,可以使用不同的方式创建地图。根据地图是可变的还是不可变的,我们有不同的语法。
语法:
//不可变
变量 = Map(key_1 -> value_1,key_2 -> value_2,
key_3 -> value_3,....)
//可变
variable = scala.collection.mutable.Map(key_1 -> value_1,
key_2 -> value_2,key_3 -> value_3,....)
**Scala地图上的操作 **
我们可以对地图进行三个基本操作:
- keys: 在Scala Map中,此方法返回一个可迭代的对象,包含map中的每个键。
- values: Value方法返回一个可迭代的对象,包含Scala map中的每个值。
- isEmpty: 此Scala map方法返回 true,如果 map 为空,则返回 false。
**使用键访问值 **
可以使用 Map 变量名和键来访问值。
示例:
// Scala map program of
// Accessing Values Using Keys
// Creating object
object GFG
{
// Main method
def main(args:Array[String])
{
val mapIm = Map("Ajay" -> 30,
"Bhavesh" -> 20,
"Charlie" -> 50)
// Accessing score of Ajay
val ajay = mapIm("Ajay")
println(ajay)
}
}
输出:
30
如果我们试图访问与键“John”关联的值,我们将会收到错误消息,因为 map 中没有这样的键。因此,在使用键访问任何值时,建议使用 contains() 函数。
此函数检查 map 中是否有该键。如果该键存在,则返回 true,否则返回 false。
// Scala map program of
// Accessing Values Using
// Keys by contains() function
// Creating object
object GFG
{
// Main methode
def main(args:Array[String])
{
val mapIm = Map("Ajay" -> 30,
"Bhavesh" -> 20,
"Charlie" -> 50)
// 检查 map 中是否存在该键
val ajay = if(mapIm.contains("Ajay"))
mapIm("Ajay") else 0
val john = if(mapIm.contains("John"))
mapIm("John") else 0
println("Ajay:" + ajay)
println("John:" + john)
}
}
输出:
Ajay:30
John:0
**更新值 **
如果我们尝试更新 immutable Map 的值,则Scala会输出一个错误。另一方面,在可变 Map 中更改任何键的值都是可以接受的。
示例:更新 immutable Map:
// Scala map program of
// Updating the values
// in immutable map
// Creating an object
object GFG
{
// Main method
def main(args:Array[String])
{
val mapIm = Map("Ajay" -> 30,
"Bhavesh" -> 20,
"Charlie" -> 50)
println(mapIm)
// Updating
mapIm("Ajay") = 10
println(mapIm)
}
}
输出:
错误:值 update 不是 scala.collection.immutable.Map[String,Int] 的成员。
更新可变 Map:
// Scala map program of
// Updating the values
// in mutable map
// Creating object
object GFG
{
// Main method
def main(args:Array[String])
{
// Creating mutable map
var mapMu = scala.collection.mutable.Map("Ajay" -> 30,
"Bhavesh" -> 20,
"Charlie" -> 50)
println(mapMu)
//Updating
mapMu("Ajay") = 10
println(mapMu)
}
}
输出:
Map(Ajay -> 30, Bhavesh -> 20, Charlie -> 50)
Map(Ajay -> 10, Bhavesh -> 20, Charlie -> 50)
**空映射 **
在Scala Map中,我们也可以创建一个空映射,然后再添加元素。
示例:
// Scala map program of
// Empty Map
// Creating object
object GFG
{
// Main method
def main(args:Array[String])
{
// Creation of Map having key-value
// pairs of type (String, Int)
val mapMut = scala.collection.mutable.Map[String, Int]()
println("Empty Map: " + mapMut)
// Adding new entry
mapMut += ("Charlie" -> 50)
println("New Entry: " + mapMut)
}
}
输出:
Empty Map: Map()
New Entry: Map(Charlie -> 50)
阅读更多:Scala 教程
极客教程