真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

scala的Map和Tuple怎么使用

這篇文章主要講解了“scala的Map和Tuple怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“scala的Map和Tuple怎么使用”吧!

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的蓮湖網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

一、Map基本操作
scala的Map和java一樣,是一種key->value的數(shù)據(jù)結(jié)構(gòu)

//新建一個(gè)不可變的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

//接下來創(chuàng)建一個(gè)可變的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

//我們也可以這樣創(chuàng)建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”這個(gè)人的話會報(bào)錯(cuò),所以我們可以先檢測Map是否存在,不存在的話返回0
scala> val xiaowangAge = if(person.contains("xiaowang111"))person("xiaowang") else 0
xiaowangAge: Int = 0

//上面這樣的操作很常見,所以scala內(nèi)置了一個(gè)方法getOrElse可以打成一樣的效果
scala> val xiaoxxiaoAge = person.getOrElse("xiaoxiao",0)
xiaoxaioAge: Int = 22

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

//增加元素,因?yàn)椴豢勺僊ap無法進(jìn)行一些操作,所以我們重新創(chuàng)建一個(gè)可變的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的基礎(chǔ)上創(chuàng)建新的Map
//比如這個(gè)增加元素
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的基礎(chǔ)操作,那么該如何遍歷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支持兩個(gè)數(shù)組合并為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元組 

想象一下,有時(shí)候一個(gè)可能需要返回多個(gè)對象,對象類型一致還好,不一致的話就需要強(qiáng)轉(zhuǎn),這樣并不安全,定義dto來應(yīng)對各種情況也可以,但這也不是一個(gè)好的方式,重用率太低了,這時(shí)候就需要tuple這個(gè)特殊的數(shù)據(jù)結(jié)構(gòu),那么什么是tuple元組呢?
元組是不同類型的數(shù)據(jù)組成的線性集合,比如:

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怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對scala的Map和Tuple怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!


當(dāng)前文章:scala的Map和Tuple怎么使用
瀏覽地址:http://www.weahome.cn/article/jjcish.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部