1. 程式人生 > >scala 基礎六 scala Map和元組的操作

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

mutable 新的 light tables 都是 數組 con port 單獨

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);

//可變Map
var m2=scala.collection.mutable.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 )  

result:
$ scalac Test.scala 
$ scala Test
元素之和為: 10

元組的叠代

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

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

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