2.6、映射

来源:互联网 发布:玛雅软件培训 编辑:程序博客网 时间:2024/05/01 00:05

映射(Map)

相信接触过spark源程序的人都见过Map之类的东西,现在算是看见其元神了,探究一下吧

在Scala中,映射是一系列键值对的集合,也就是,建立了键和值之间的对应关系。在映射中,所有的值,都可以通过键来获取。有点像mysql中的唯一字段id和name对应,通过id可以获得名字一个道理。映射包括可变和不可变两种,默认情况下创建的是不可变映射,如果需要创建可变映射,需要引入“scala.collection.mutable.Map”包。

创建映射

下面创建一个不可变映射:

val abc = Map("FIR" -> "aaa", "SEC" -> "bbb","THR"->"ccc")

如果要获取映射中的值,可以通过键来获取,如下:

println(abc("FIR"))

上面代码通过”FIR”这个键,可以获得值aaa。
如果要检查映射中是否包含某个值,可以使用contains方法,如下:

val mymap = if (abc.contains("FIR")) aaa("FIR") else 0println(mymap)

上面我们定义的是不可变映射,是无法更新映射中的元素的,也无法增加新的元素。如果要更新映射的元素,就需要定义一个可变的映射,如下:

import scala.collection.mutable.Mapval mymap2 = Map("FRI" -> "Xiamen University", "SEC" -> "bbb","THR"->"ccc")mymap2("SEC") = "ddd" //更新已有元素的值mymap2("FOR") = "eee" //添加新元素//也可以使用+=操作来添加新的元素mymap2 + = ("ABNC"->"hello","BND"->"world")

循环遍历映射

循环遍历映射,是经常需要用到的操作:

for ((k,v) <- mymap) printf("ID is : %s and Name is: %s\n",k,v)//格式为:for ((k,v) <- 映射) 语句块//结果为://ID is : XXXX and name is: xxxxx

也可以只遍历映射中的k或者v,比如:for (k<-mymap.keys) println(k),就只会打印出所有的k了

原创粉丝点击