网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

scala的Map和Tuple怎么使用

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

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的莲湖网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

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

//新建一个不可变的Map
scala> 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

//接下来创建一个可变的Map
scala> 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

//我们也可以这样创建Map
scala> 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是否存在,不存在的话返回0
scala> val xiaowangAge = if(person.contains("xiaowang111"))person("xiaowang") else 0
xiaowangAge: Int = 0

//上面这样的操作很常见,所以scala内置了一个方法getOrElse可以打成一样的效果
scala> val xiaoxxiaoAge = person.getOrElse("xiaoxiao",0)
xiaoxaioAge: Int = 22

scala> val xiaoxiaoAge = person.getOrElse("xiaoxiao111",0)
xiaoxaioAge: Int = 0

//增加元素,因为不可变Map无法进行一些操作,所以我们重新创建一个可变的Map
scala>  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") = 14

scala> 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.遍历key
scala> for(key <- person.keySet)println(key)
xiaopang
xiaofang

//2.遍历value
scala> for(value <- person.values)println(value)
14
18

//3.遍历key和value
scala> for((key,value)<-person)println(key+"  "+value)
xiaopang  14
xiaofang  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  18
xiaopang  15

二、Tuple元组 

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

scala> val tup = ("li",20,185)
tup: (String, Int, Int) = (li,20,185)

//可以这样访问tuple元素
scala> tup._1
res20: String = li

scala> tup._2
res21: Int = 20

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


分享文章:scala的Map和Tuple怎么使用
本文网址:http://bjjierui.cn/article/jjcish.html

其他资讯