3. Map与Tuple
一. Map
- 对偶
 (1)对偶是一个映射。多个对偶形成map
 (2)对偶的表示:(k,v)或者k->v
- Map(哈希类型)
 (1)map的声明与查询scala> val map1 = Map(("a",1),("b",2),("c",3)) map1: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 3) scala> map1("a") res3: Int = 1 scala> if(map1.contains("a")) map1("a") else 0 // contains方法 res4: Int = 1 scala> map1.getOrElse("a",0) // 上面的简写形式 res6: Int = 1
(2)immutable map的插入,删除映射
scala     scala> val newMap = map1 + ("a"->5,"d"->4)   // 不可变map的+操作返回一个新集合     newMap: scala.collection.immutable.Map[String,Int] = Map(a -> 5, b -> 2, c -> 3, d -> 4)     
【注】:对于不可便map来说,添加对偶形成新map,不会把原有的对偶复制一遍,而是指向原来的对偶(这样做之所以可行,因为他们是不可变集合)
(3) 遍历集合
scala     scala> for((k,v)<-map1) println(k+"\t"+v)     a	1     b	2     c	3     scala> for(v <- map1.values) print(v+",")     1,2,3,     scala> for(k <- map1.keySet) print(map1(k)+",")     1,2,3,     
3. SortedMap(树形排序map)
scala中没有可变树形map,如要使用,可选择java的treemap
```scala
scala> scala.collections.immutable.SortedMap("Alice"->10,"Fred"->7,"Cindey"->8)
```
- 
scala操作java集合 
 scala要操作java集合,先要把java集合转换成scala集合import scala.collection.JavaConversions.mapAsScalaMap // java到scala的转换 val treeMap: scala.collection.mutable.Map[String, Int] = new java.util.TreeMap[String,Int] //TreeMap只能转换成mutable map import scala.collection.JavaConversions.propertiesAsScalaMap // Properties到Map的转换 val props: scala.collection.Map[String,String] = System.getProperties
二. 元组
- 元组:是不同数据类型的聚集。
 (1)对偶是元组的最简单形式(2个元素的元组)
 (2)元组的写法:小括号扩起来,逗号分割组元
 (3)_index访问元组的组元
 (4)模式匹配匹配2个元组对应的组元
 (5)元组用来表示函数返回不同类型的多个值scala> val tuple1 = (1,3.14,"fred") // 不同数据类型 tuple1: (Int, Double, String) = (1,3.14,fred) scala> tuple1._1 // _index访问元组的组元 res14: Int = 1 scala> val(first,second,_) = tuple1 // 模式匹配 scala> first res15: Int = 1 scala> "New York".partition(_.isUpper) // 函数返回不同类型的多个值 res16: (String, String) = (NY,ew ork)
- Array的zip方法,返回元组scala> val arr1 = Array(1,2,3) scala> var arr2 = Array("a","b","c") scala> arr1.zip(arr2) res17: Array[(Int, String)] = Array((1,a), (2,b), (3,c))
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号