美文网首页
2020-11.07-Scala-27(一些语法的补充3)

2020-11.07-Scala-27(一些语法的补充3)

作者: 冰菓_ | 来源:发表于2020-11-08 07:49 被阅读0次

    1.Map 和 mutable.Map val 和 val + 和 +=

    1.对于mutableMap 是没有区别的
    2.代码展示一下Map
    (对于val 的 + 是重新生成一个映射 对于var 的 += 是给原来的地址 val 是无法使用 +=的)

    object Test5 {
      def main(args: Array[String]): Unit = {
        val arr = Map[Int, Int]()
        println(arr.hashCode()) //-1609326920
        println((arr + (1 -> 1)).hashCode()) //1253965557
        println(arr.hashCode()) //-1609326920
    
        var arr1 = Map[Int, Int]()
        println(arr1.hashCode()) //-1609326920
        arr1 =  arr1 + (3 -> 1)
        println(arr1.hashCode())
        println(arr1)
        println((arr1 += (2 -> 1)).hashCode()) //()  0
        println(arr1.hashCode()) //1253965557
        println(arr1)
    
        var arr2 = Map[Int, Int]()
        println(arr2.hashCode()) //-1609326920
        println(arr2 + (2 -> 1)) // Map(1 -> 1)
        println(arr2.hashCode()) //Map() //-1609326920
        var arr3 = Map[Int, Int]()
        println(arr3 == arr2)   //true
        println(arr3)
      }
    }
    

    2.添加和去除元素的操作符

    操作符 描述 集合类型
    coll :+ elem
    elem +: coll 有elem被追加到尾部或头部的与coll类型相同的集合 Seq
    coll + elem
    coll + (e1, e2, …) 添加了给定元素的与coll类型相同的集合 Set、Map
    coll - elem
    coll - (e1, e2, …) 给定元素被移除的与coll类型相同的集合 Set、Map、ArrayBuffer
    coll ++ coll2
    coll2 ++: coll 与coll类型相同的集合,包含了两个集合的元素 Iterable
    coll – coll2 移除了coll2中元素的与coll类型相同的集合(用diff来处理序列) Set、Map、ArrayBuffer
    elem :: lst
    lst2 ::: lst 被向前追加了元素或给定列表的列表。和+:以及++:的作用相同 List
    list ::: list2 等同于list ++: list2 List
    set | set2
    set & set2
    set &~ set2 并集、交集和两个集的差异。|等于++,&~等于– Set
    coll += elem
    coll += (e1, e2, …)
    coll ++= coll2
    coll -= elem
    coll -= (e1, e2, …)
    coll –= coll2 通过添加或移除给定元素来修改coll 可变集合
    elem +=: coll
    coll2 ++=: coll 通过向前追加给定元素或集合来修改coll ArrayBuffer

    操作符的汇总

    向后(:+)或向前(+:)追加元素到序列当中。
    添加(+)元素到无先后次序的集合中。
    用-移除元素。
    用++和–来批量添加和移除元素。
    对于列表,优先使用::和:::。
    改值操作用+=、++=、-=和–=。
    对于集合,更喜欢++、&和–。
    尽量不用++:、+=:和++=:。
    对于列表可以用+:而不是::来保持与其他集合操作的一致性。但有一个例外:模式匹配(case h::t)不认+:操作符

    apply 方法
    image.png

    拉链操作

    image.png

    相关文章

      网友评论

          本文标题:2020-11.07-Scala-27(一些语法的补充3)

          本文链接:https://www.haomeiwen.com/subject/xwbsvktx.html