這篇文章主要講解了“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)注!