大資料系列-Scala學習4
阿新 • • 發佈:2018-12-25
問題:
1、Map(對映)的操作
2、Tuple(元組)的操作
1、對映
對映是鍵/值對偶的
val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8)
上述程式碼構造出一個不可變的Map[String,Int],其值不能被改變,如果你想要一個可變對映可以用
var score=scala.collection.mutable.Map("Alice"->10,"Bob"->3,"Cindy"->8)
如果你只是想定義一個空的對映,你需要選定一個對映實現並給出型別引數
val scoress=new scala.collection.mutable .HashMap[String,Int]
獲取對映中的值
val bobsScore=scores("Bob")
如果用上面的方法會存在一個問題,如果請求中沒有這個鍵,那麼就會丟擲異常
所以我們應該這麼寫
val bobs=if (scores.contains(“Bob”)) scores(“Bob”) else 0
println(bobs)
簡介的寫法是
val bob=scores.getOrElse(“Bob”, 0)
println(bob)
更新對映中的值 假設score是一個可變的對映
score(“Bob”)=10 更新原來的值
score(“Fred”)=9 增加一個鍵/值對
score +=(“xlucas”->20,”xulu”->19) 用+=來增加多個關係
score -=”xlucas” 移除某一個鍵
迭代遍歷
for((k,v)<-score) println(v,k)
for(v<-score.values) println(v)
案例
package cn.xlucas.day4
object TupleDemo1 {
def main(args:Array[String]){
val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8)
var score=scala.collection.mutable.Map("Alice"->10,"Bob"->3,"Cindy"->8 )
val scoress=new scala.collection.mutable.HashMap[String,Int]
println(scores)
//獲取到對映中的值
val bobsScore=scores("Bob")
println(bobsScore)
//如果用上面的方法會存在一個問題,如果請求中沒有這個鍵,那麼就會丟擲異常
//所以我們應該這麼寫
val bobs=if (scores.contains("Bob")) scores("Bob") else 0
println(bobs)
//簡介的寫法是
val bob=scores.getOrElse("Bob", 0)
println(bob)
score("Bob")=10
score("Fred")=9
score +=("xlucas"->20,"xulu"->19)
score -="xlucas"
println(score)
for((k,v)<-score) println(v,k)
for(v<-score.values) println(v)
}
}
結果
Map(Alice -> 10, Bob -> 3, Cindy -> 8)
3
3
3
Map(Bob -> 10, Fred -> 9, Alice -> 10, xulu -> 19, Cindy -> 8)
(10,Bob)
(9,Fred)
(10,Alice)
(19,xulu)
(8,Cindy)
10
9
10
19
8
2、元組
(1)在元組當中可以存放很多個數據,元組中資料的訪問是從下標1開始的.
(2)元組是很重要的,因為對於一個函式或運算元來說,有可能會返回幾個值,我們常用tuple中定義的幾個變數來接受 函式返回的數值。
案例
package cn.xlucas.day4
object TupleDemo2 {
def main(args:Array[String]){
val tripe = ("Spark","Hadoop",88.8,20)
println(tripe._1) //對於元組來說,資料的訪問是從下標1開始的
println(tripe._2)
println(tripe._3)
println(tripe._4)
var [email protected] = "Spark" //a是b的別名
println(a+"\t"+b)
a = "Hadoop"
println(a+"\t"+b)
val (c,d) = (100,"Spark")
println(c+"\t"+d)
val Array(e,f) = Array(100,300)
println(e+"\t"+f)
}
}
結果
Spark
Hadoop
88.8
20
Spark Spark
Hadoop Spark
100 Spark
100 300