62.scala编程思想笔记——映射表

154 阅读1分钟

62.scala编程思想笔记——映射表

欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…
源码下载连接请见第一篇笔记。         

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.AtomicTest._

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看起来就像是简单的小型数据库。