温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

scala的Map和Tuple怎么使用

发布时间:2021-12-08 14:51:38 阅读:250 作者:iii 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要讲解了“scala的Map和Tuple怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scala的Map和Tuple怎么使用”吧!

一、Map基本操作
scala的Map和java一样,是一种key->value的数据结构

//新建一个不可变的Mapscala> val person = Map("xiaoli"->15,"xiaofang"->18)person: scala.collection.immutable.Map[String,Int] = Map(xiaoli -> 15, xiaofang -> 18)scala> person("xiaoli")res1: Int = 15//接下来创建一个可变的Mapscala> val person = scala.collection.mutable.Map("xiaoli"->15,"xiaofang"->18)person: scala.collection.mutable.Map[String,Int] = Map(xiaoli -> 15, xiaofang -> 18)scala> person("xiaofang")res3: Int = 18//我们也可以这样创建Mapscala> val person = Map(("xiaoxiao",22),("xiaowang",30))person: scala.collection.immutable.Map[String,Int] = Map(xiaoxiao -> 22, xiaowang -> 30)//如果要获取Map的value,可以这样获取scala> val xiaowangAge = person("xiaowang")xiaowangAge: Int = 30//但是如果没有“xiaowang”这个人的话会报错,所以我们可以先检测Map是否存在,不存在的话返回0scala> val xiaowangAge = if(person.contains("xiaowang111"))person("xiaowang") else 0xiaowangAge: Int = 0//上面这样的操作很常见,所以scala内置了一个方法getOrElse可以打成一样的效果scala> val xiaoxxiaoAge = person.getOrElse("xiaoxiao",0)xiaoxaioAge: Int = 22scala> val xiaoxiaoAge = person.getOrElse("xiaoxiao111",0)xiaoxaioAge: Int = 0//增加元素,因为不可变Map无法进行一些操作,所以我们重新创建一个可变的Mapscala>  val person = scala.collection.mutable.Map("xiaoli"->15,"xiaofang"->18)person: scala.collection.mutable.Map[String,Int] = Map(xiaoli -> 15, xiaofang -> 18)scala> person += ("xiaopang"->13)res10: person.type = Map(xiaoli -> 15, xiaopang -> 13, xiaofang -> 18)//更新元素scala> person("xiaopang") = 14scala> person("xiaopang")res12: Int = 14//删除元素scala> person -= "xiaoli"res13: person.type = Map(xiaopang -> 14, xiaofang -> 18)//那么如果就是不可变的Map就没办法操作了吗?也不是,只不过会在原Map的基础上创建新的Map//比如这个增加元素scala> val person2 = person+("xiaoshou"->17)person2: scala.collection.mutable.Map[String,Int] = Map(xiaopang -> 14, xiaoshou -> 17, xiaofang -> 18)//删除元素scala> val person3 = person2 - "xiaoshou"person3: scala.collection.mutable.Map[String,Int] = Map(xiaopang -> 14, xiaofang -> 18)

上面都是Map的基础操作,那么该如何遍历Map呢?

//1.遍历keyscala> for(key <- person.keySet)println(key)xiaopangxiaofang//2.遍历valuescala> for(value <- person.values)println(value)1418//3.遍历key和valuescala> for((key,value)<-person)println(key+"  "+value)xiaopang  14xiaofang  18

scala支持两个数组合并为Map,代码如下

scala> val names = Array("xiaoxiao","xiaopang")names: Array[String] = Array(xiaoxiao, xiaopang)scala> val ages = Array(18,15)ages: Array[Int] = Array(18, 15)//这是合并代码,用zip方法来合并scala> val person = names.zip(ages)person: Array[(String, Int)] = Array((xiaoxiao,18), (xiaopang,15))scala> for((key,value)<- person)println(key+"  "+value)xiaoxiao  18xiaopang  15

二、Tuple元组  

想象一下,有时候一个可能需要返回多个对象,对象类型一致还好,不一致的话就需要强转,这样并不安全,定义dto来应对各种情况也可以,但这也不是一个好的方式,重用率太低了,这时候就需要tuple这个特殊的数据结构,那么什么是tuple元组呢?
元组是不同类型的数据组成的线性集合,比如:

scala> val tup = ("li",20,185)tup: (String, Int, Int) = (li,20,185)//可以这样访问tuple元素scala> tup._1res20: String = liscala> tup._2res21: Int = 20

感谢各位的阅读,以上就是“scala的Map和Tuple怎么使用”的内容了,经过本文的学习后,相信大家对scala的Map和Tuple怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/3969474/blog/4402765

AI

开发者交流群×