[关闭]
@amoszhou 2014-05-06T16:13:19.000000Z 字数 860 阅读 1245

映射和元组

未分类


1.映射Map

1.1定义和构造

定义和Array类似,初始化则不需要用new,否则要用new.

  1. val scores = Map("Alice"->80,"bob"->97,"john"->100)
  2. val scores2= new scala.collection.mutable.HashMap[String,Int]

和Array一样,第1种是不可变的,第2种是可变的。scala的可变集合类都在scala.collection.mutable里面。

  1. val scores = Map(("Alice",10),("Bob",3),("john",8))

这是第3种方式,用对偶的方式创建。

1.2. 获取值

也和Array一样,用()。比如

  1. val bobScore = scores("Bob")

但是如果不包含这个key,就会抛出异常,这种情况我们碰到的频率也非常高,所以一般都这么写:

  1. val bobScore = scores.getOrElse("Bob",0)//指定默认值

1.3.更新和新插入值

  1. scores("Bob") = 75 //存在就更新,否则插入(前提Map是可变的)
  2. scores += ("aa"->73,"bb"->33) //添加多个

1.4.迭代

语法和Array也类似for ((k,v) <- map)
获取keyset和value map.keySet map.values
反转一个map。可以用for...yield语法for((k,v)<-map) yield (v,k)

2.元组

2.1 定义

元组是不同类型的值的聚集,对偶是元组最间的形式。
使用元组的好处之一就是可以讲多个值绑在一起,进行处理。最常见的就是拉链操作:zip

  1. val symbols = Array("<","-",">")
  2. val counts = Array(2,10,2)
  3. val pairs = symols zip counts // Array(("<",2),("-",10),(">",2))

2.2 访问

用_index访问,比如: symbols._1,symbols_2.注意的是下标从1开始。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注