1. 程式人生 > >Scala的映射和元組操作

Scala的映射和元組操作

獲取元素 res 集合 組類型 映射 flag system 元素 clas

映射和元組操作

  • 構造Map
    // 構造一個不可變的MAP映射,類似與key -> value這樣的組合叫做對偶
    val score = Map("Jack" -> 12, "Bob" -> 20)
    // 也可以這種創建一個Map映射
    val score1 = Map(("Jack", 12), ("Bob", 20))
    // 根據key獲取value,類似java中的map.get(key)若是獲取一個不存在的key則會報錯而不是null
    println(score("Jack"))
    // 獲取元素不存在給出無元素提醒
    val flag = if (score.contains("haha")) score.get("haha") else "no such element"
    val flag1 = score.getOrElse("haha", "no such element")
    // 創建可變Map
    val score = scala.collection.mutable.Map("Jack" -> 12, "Bob" -> 20)
  • 更新映射中的值
在可變的映射中,可以更新某個映射的值,在=號左側使用():
// 更新可變的Map的值
scores("Bob") = 10
// 添加新的key-value
scores("haha")=7
// 也可以使用+=操作和創建映射關系
scores +=("Michael" -> 22)
// 移除某個鍵對應的值
score -=("Michael")
  • 叠代映射
for((k,v) <- 映射) 這種可以得到每一個的鍵值對
// 和java一樣可以使用keySet和values方法,values方法將會返回一個iterable
score.keySet // 返回類似("Bob","Michael")
// 獲取map的value
for (v <- score.values) println(v)
  • 排序映射

    操作映射時,需要選定一個實現---哈希表或者平衡樹,默認情況Scala中式hash表,若想順序訪問所有的鍵,因此需要一個樹形映射

val scores = scala.collection.immutable.SortedMap("Bob" -> 10,"michael" -> 12)
  • 與java的互操作
// import scala.collection.javaConversions.mapAsScalaMap 然後指定Scala映射類型觸發轉換
val scores:scala.collection.mutable.Map[String,Int] = new java.util.TreeMap[String,Int]
// import scala.collection.javaConversions.propertiesAsScalaMap
val props :scala.collection.Map[String,String] = System.getProperties()
// 以上都是將java的map轉為Scala的map,可以將Scala的map轉為java的mao
import scala.collection.javaConversions.mapAsJavaMap
  • 元組

映射式鍵值對的集合,對偶式元組(tuple)的最簡單的形態---而元組式不同類型值得聚集

(1,95.27,"Bob") 是一個元組類型為(Int,Double,java.lang.String)可以方法_1,_2,_3訪問元組例如以下元組:
    val l = (1,2.34,"哈哈")
    println(l._2)
  • 拉鏈操作
// 使用元組可以將他們映射起來使用zip方法
    val symbols = Array("<","-",">")
    val counts = Array(2,10,2)
    val pairs = symbols.zip(counts)
    println(pairs.toBuffer)
    // 打印<<---------->>
    for ((s,n) <- pairs) Console.print(s * n)

Scala的映射和元組操作