溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala的Map和Tuple怎么使用

發布時間:2021-12-08 14:51:38 來源:億速云 閱讀:280 作者:iii 欄目:大數據

這篇文章主要講解了“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怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女