3. Map与Tuple

一. Map

  1. 对偶
    (1)对偶是一个映射。多个对偶形成map
    (2)对偶的表示:(k,v)或者k->v
  2. Map(哈希类型)
    (1)map的声明与查询
    ```scala
    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.collections.immutable.SortedMap("Alice"->10,"Fred"->7,"Cindey"->8)
  4. 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
    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
    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))

    ```

转载于:https://www.cnblogs.com/72808ljup/p/5431090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值