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

2020-11-08  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读