scala 基礎七 scala Map和元組的操作


1.Map的介紹

Map(映射)是一種可迭代的鍵值對(key/value)結構。所有的值都可以通過鍵來獲取。Map 中的鍵都是唯一的。Map 也叫哈希表(Hash tables)。Map 有兩種類型,可變與不變,區別在於可變對象可以修改它,而不可變對象不可以。默認情況下 Scala 使用不可變 Map。如果你需要使用可變集合,你需要顯式的引入 import scala.collection.mutable.Map

2.Map 的分類和定義

    //不可變Map
    var m1=Map("james"->20,"luce"->22);
    
    //指定泛型,如果不指定scala會根據類型自動判斷
    var m3=scala.collection.mutable.Map[String,Int]();

 

 3.不可變Map的使用

 
    //根據Key獲取value 如果key不存在的話會拋出異常
    m1("james");
    
    //等同於m1("james") 如果key不存在的話會 返回None
    m1.get("james");
    
    //給key 設置一個默認值,如果key 不存在就設置為20 不至於拋出異常
    m1.getOrElse("tom", 20)
    
    //獲取所有的key 
    m1.keys 
    
    //獲取所有的value
    m1.values

 4.可變Map的操作

  //可變Map
    var m2=scala.collection.mutable.Map("james"->20,"luce"->22);
    
    //產生一個新的對象,不會動態增加
    m2+("lili"->18)
    
    //不產生新對象直接在m2 中增加對象
    m2+=("lili"->18);

 5.遍歷集合

    遍歷所有的key 和value  格式for((k,v)<-x){....}

//可變Map
var m2=scala.collection.mutable.Map("james"->20,"luce"->22);
//遍歷Key 和Value
 for((k,v)<-m2){println("key is"+k+" value is"+v)}

result:

key isjames value is20
key isluce value is22
key islili value is18

 單獨的遍歷Key 或者value   for((k,_)<-x){}  for((_,v)<-x){}

//只遍歷所有的key value 省略
for((k,_)<-m2) println("key is "+k)
    
//只遍歷所有的value key省略
for((_,v)<-m2) println("value is"+v)



result:
key is james
key is luce
key is lili
value is20
value is22
value is18

 6.元組的介紹和使用

與列表一樣,元組也是不可變的,但與列表不同的是元組可以包含不同類型的元素。

val t = (1, 3.14, "Fred")

 以上實例在元組中定義了三個元素,對應的類型分別為[Int, Double, java.lang.String]。

元組的取值

元組 通過 ._ 取值, 下標從1 開始,比如 t._1 將獲取1 這點和數組不同,數組的下標是從0開始的

val t = (4,3,2,1)

val sum = t._1 + t._2 + t._3 + t._4

println( "元素之和為: "  + sum )  

//scala 的元組允許多層嵌套,格式為。
val t = ("tome",("james",(18,"boy")))  
println(t._1+" "+t._2._1+" "+t._2._2._1+" "+t._2._2._2);

 

元組的迭代

你可以使用 Tuple.productIterator() 方法來迭代輸出元組的所有元素:

  //通過 productIterator 迭代元組
    for(x<-t.productIterator) println(x)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM