如何在Scala中迭代Map?

迭代/遍历映射是访问map所有元素的过程。为此,我们将遍历映射的所有元素,并打印映射的元素的键值对。

映射是一种数据结构,其中包含键-值对形式的数据元素,并且可以使用键访问元素。

创建map的语法:

    val map_element = Map( key1 -> value1 , key2 -> value2 )

示例图:

    val programmingLang = Map(1 -> "C", 2 -> "C++", 3 -> "Scala");

遍历映射

您可以通过多种方式遍历映射并超出其元素:

  1. 使用for循环

  2. 使用foreach循环

  3. 使用迭代器方法

1)使用for循环遍历Scala中的map

for循环用于循环映射图元素。

语法:

    for((key,value) <- map_name){
        //code to be executed 
    }

程序使用for循环打印映射元素

object MyObject {
    def main(args: Array[String]) {
        val progLang = Map(1 -> "C" , 2 -> "C++" , 3 -> "Scala" , 4 -> "Python")
        
        println("Iterating over Map using for Loop")
        for((count,language) <- progLang){
            println(count + " -> " + language)
        }
    }
}

输出结果

Iterating over Map using for Loop
1 -> C
2 -> C++
3 -> Scala
4 -> Python

说明:

在该程序中,我们说明了使用for循环迭代映射的方法。我们创建了一个名为progLang的map,然后使用for循环来打印该map的键和值。

2)使用foreach循环遍历Scala中的map

使用映射名称调用foreach循环,并循环访问映射的所有元素。

语法:

    map_name.foreach{
        //code to be executed 
    }

可以使用两种不同的方法来使用foreach循环来访问map的元素。它们匹配基于表达式和元组的访问。

在基于匹配表达式的访问中,我们将访问map元素,并对其进行命名和访问。

语法:

    Map_name.foreach{        case(key, value) => //Code for accessing the values...
    }

另一种方法是相当不同的,因为它使用元组来访问map的元素。因此,键将是元组的第一个值,而值将是元组的第二个值。

语法:

    Map_name.foreach( x => //code for accessing the values...

程序使用foreach循环打印映射元素

object MyObject {
    def main(args: Array[String]) {
        val myBikes = Map(1 -> "ThunderBird350" , 2 -> "Yamaha R3" , 3 -> "Iron 883" , 4 -> "BMW S1000RR")

        println("Iterating over Map using foreach Loop")
        myBikes.foreach(bike => println("Bike No. : " + bike._1 + " name : " + bike._2))
    }
}

输出结果

Iterating over Map using foreach Loop
Bike No. : 1 name : ThunderBird350
Bike No. : 2 name : Yamaha R3
Bike No. : 3 name : Iron 883
Bike No. : 4 name : BMW S1000RR

说明:

在该程序中,我们说明了使用foreach循环迭代映射的方法。我们创建了一个名为myBikes的map,然后使用元组访问方法使用foreach对其进行迭代。

3)使用迭代器方法迭代Scala中的map

迭代器方法用于为map创建一个迭代器,该迭代器用于循环映射的值。

语法:

    map_name.iterator

它根据map返回一个迭代器。然后,我们必须使用iterator_name.next方法来打印迭代器的元素,这些元素在map的情况下以元组形式返回。

程序使用迭代器方法打印映射元素

object MyObject {
    def main(args: Array[String]) {
        val myBikes = Map(1 -> "ThunderBird350" , 2 -> "Yamaha R3" , 3 -> "Iron 883" , 4 -> "BMW S1000RR")

        println("Iterating over Map using iterator method")
        val bike = myBikes.iterator
        while(bike.hasNext)
            println(bike.next)
    }
}

输出结果

Iterating over Map using iterator method
(1,ThunderBird350)
(2,Yamaha R3)
(3,Iron 883)
(4,BMW S1000RR)

说明:

在此程序中,我们说明了使用迭代器方法迭代映射的方法。我们已经创建了一个映射,然后定义了一个迭代器方法,该方法将用于迭代映射的元素。方法itorator.hasnext用于检查迭代器的下一个元素是否存在,并使用iterator.next方法将其打印为元组。