天天看點

62.scala程式設計思想筆記——映射表

62.scala程式設計思想筆記——映射表

歡迎轉載,轉載請标明出處:http://blog.csdn.net/notbaron/article/details/50458732

源碼下載下傳連接配接請見第一篇筆記。         

Map(映射表)将鍵與值關聯起來。當給定一個鍵時,Map會找出對應的值。

例如:

import com.atomicscala.AtomicTest._

val constants = Map("Pi" -> 3.141,

  "e"-> 2.718, "phi" -> 1.618)

Map(("Pi", 3.141), ("e", 2.718),

 ("phi", 1.618)) is constants

Vector(("Pi", 3.141), ("e",2.718),

 ("phi", 1.618)).toMap is constants

// Look up a value from a key:

constants("e") is 2.718

constants.keys is "Set(Pi, e, phi)"

constants.values is

"MapLike(3.141, 2.718, 1.618)"

// Iterate through key-value pairs:

(for(pair <- constants)

  yieldpair.toString) is

"List((Pi,3.141), (e,2.718), (phi,1.618))"

// Unpack during iteration:

(for((k,v) <- constants)

  yield k +": " + v) is

"List(Pi: 3.141, e: 2.718, phi: 1.618)"

其中Map還可以用逗号分離的元組清單來初始化。

針對Map,()操作符可以用來查找。通過keys方法可以獲得所有鍵,而通過values方法可以獲得所有值。

例子如下:

import com.atomicscala.Name

trait Pet extends Name

class Bird extends Pet

class Duck extends Bird

class Cat extends Pet

class Dog extends Pet

val petMap = Map("Dick" -> new Bird,

 "Carl" -> new Duck, "Joe" -> new Cat,

 "Tor" -> new Dog)

petMap.keys is

Set("Dick", "Carl","Joe", "Tor")

petMap.values.toVector is

"Vector(Bird, Duck, Cat, Dog)"

其實,Map看起來就像是簡單的小型資料庫。