• 3. Map与Tuple


    一. Map

    1. 对偶
      (1)对偶是一个映射。多个对偶形成map
      (2)对偶的表示:(k,v)或者k->v
    2. 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+" "+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)
    ```
    
    1. 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. 元组:是不同数据类型的聚集。
      (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)
      
    2. 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))
      
      
  • 相关阅读:
    codeforces234C
    codeforces340D
    Codeforces Round #259 (Div. 2) 解题报告
    memset 赋值
    codeforces2B
    codeforces431C
    Node.js权威指南 (10)
    归档普通对象Demo示例程序源代码
    联系人数据存储Demo源代码
    1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数
  • 原文地址:https://www.cnblogs.com/72808ljup/p/5431090.html
Copyright © 2020-2023  润新知