• 4、map 和 tuple


    不可变Map,默认的Map

    scala> val map = Map(1 -> "t1",2 -> "t2")
    map: scala.collection.immutable.Map[Int,String] = Map(1 -> t1, 2 -> t2)
    
    scala> map.updated(1,"t11")
    res26: scala.collection.immutable.Map[Int,String] = Map(1 -> t11, 2 -> t2)
    
    scala> map.updated(3,"t3")
    res27: scala.collection.immutable.Map[Int,String] = Map(1 -> t1, 2 -> t2, 3 -> t3)
    
    //可见updated返回新的不可变Map,原map没有改变 scala
    > map res28: scala.collection.immutable.Map[Int,String] = Map(1 -> t1, 2 -> t2)
    //取值
    scala> map(1) res29: String = t1 scala> map(2) res30: String = t2
    override def updated[B1 >: String](key: Int,value: B1): scala.collection.immutable.Map[Int,B1]
    //B1 >: String  表示B1是String的父类

    可变Map,需要导类并指定别名

    scala> import scala.collection.mutable.{Map => MMap}
    import scala.collection.mutable.{Map=>MMap}
    
    scala> val mmap = MMap((1,"t1"),(2,"t2"))
    mmap: scala.collection.mutable.Map[Int,String] = Map(2 -> t2, 1 -> t1)
    
    scala> mmap.updated(1,"t11")
    res31: scala.collection.mutable.Map[Int,String] = Map(2 -> t2, 1 -> t11)
    
    scala> mmap.updated(3,"t3")
    res32: scala.collection.mutable.Map[Int,String] = Map(2 -> t2, 1 -> t1, 3 -> t3)
    
    //updated不能用于修改原Map scala
    > mmap res33: scala.collection.mutable.Map[Int,String] = Map(2 -> t2, 1 -> t1) scala> mmap.update(1,"t11") scala> mmap.update(3,"t3")
    //可变Map中update可修改原Map scala
    > mmap res36: scala.collection.mutable.Map[Int,String] = Map(2 -> t2, 1 -> t11, 3 -> t3)
    //取值
    scala> mmap(1) res37: String = t11

    Map是对偶的集合,对偶是只有两个元素的元组,对应java Map中Entry

    scala> val v1 = 1 -> "t1"
    v1: (Int, String) = (1,t1)
    
    scala> val v2 = (2,"t2")
    v2: (Int, String) = (2,t2)

    contains、getOrElse、+=

    scala> map.contains(1)
    res53: Boolean = true
    
    scala> map.contains(3)
    res55: Boolean = false
    
    scala> val v = map.getOrElse(3,"t3")
    v: String = t3
    
    scala> mmap
    res59: scala.collection.mutable.Map[Int,String] = Map(2 -> t2, 4 -> t4, 1 -> t11, 3 -> t3)
    
    scala> mmap.+=((5,"t5"))
    res60: mmap.type = Map(2 -> t2, 5 -> t5, 4 -> t4, 1 -> t11, 3 -> t3)

    有序Map

    scala> val m = scala.collection.immutable.SortedMap((4,"t4"),(3,"t3"),(0,"t0"))
    m: scala.collection.immutable.SortedMap[Int,String] = Map(0 -> t0, 3 -> t3, 4 -> t4)

    tuple

    scala> val t = (1,"tom",'a')
    t: (Int, String, Char) = (1,tom,a)
    
    scala> t._3
    res68: Char = a

    zip拉链

    scala> val ids = Array(1,2,3)
    ids: Array[Int] = Array(1, 2, 3)
    
    scala> val names = Array("t1","t2","t3")
    names: Array[String] = Array(t1, t2, t3)
    
    scala> ids.zip
    zip   zipAll   zipWithIndex
    
    scala> ids.zip(names)
    res62: Array[(Int, String)] = Array((1,t1), (2,t2), (3,t3))

     zipAll全拉链

    scala> val arr = Array(1,2,3)
    arr: Array[Int] = Array(1, 2, 3)
    
    scala> val arr1 = Array(1,2,3)
    arr1: Array[Int] = Array(1, 2, 3)
    
    scala> val arr2 = Array(1,2,3,4)
    arr2: Array[Int] = Array(1, 2, 3, 4)
    
    scala> val arr3 = Array(1,2)
    arr3: Array[Int] = Array(1, 2)
    
    scala> arr.zipAll(arr1,-1,-2)  //三个参数,arr1被拉数组,-1当arr不够时用-1填充,-2当arr1不够时用-2填充
    res4: Array[(Int, Int)]
    = Array((1,1), (2,2), (3,3)) scala> arr.zipAll(arr2,-1,-2) res5: Array[(Int, Int)] = Array((1,1), (2,2), (3,3), (-1,4)) scala> arr.zipAll(arr3,-1,-2) res6: Array[(Int, Int)] = Array((1,1), (2,2), (3,-2))
    渐变 --> 突变
  • 相关阅读:
    最短路总结
    关于最小生成树(并查集)prime和kruskal
    关于优先队列浅析(priority_queue)
    惨痛第十届蓝桥杯总结(附录蓝桥省赛知识点总结)-C++ B组
    初识STL vector
    sort();对结构体数组的排序
    Git 分支管理
    Git 远程仓库
    Matlab R2016a 破解教程
    Ubuntu卡在logo界面
  • 原文地址:https://www.cnblogs.com/lybpy/p/9726622.html
Copyright © 2020-2023  润新知