Scala Map

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地图上的操作 **

我们可以对地图进行三个基本操作:

  1. keys: 在Scala Map中,此方法返回一个可迭代的对象,包含map中的每个键。
  2. values: Value方法返回一个可迭代的对象,包含Scala map中的每个值。
  3. 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 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程