當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Scala HashMap.merged用法及代碼示例

merged 方法(或屬性)屬於 scala.collection.immutable.HashMap 類(class),其相關用法說明如下。

用法:

def merged[V1 >: V](that: HashMap[K, V1])(mergef: ((K, V), (K, V1)) => (K, V1)): HashMap[K, V1]

通過組合兩個映射的所有鍵值對並將這個HashMap 與另一個HashMap 合並,並委托給一個合並函數來解決兩個 HashMap 之間的任何鍵衝突。

值參數:

mergef

解決兩個 HashMap 之間衝突的合並函數。如果 mergef 為空,則來自 this 的鍵將覆蓋來自 that 的鍵,使行為等同於 that.concat(this)

that

HashMap 將此 HashMap 與

注意:

如果 mergef 返回的鍵本身與 merge 返回的其他鍵發生衝突,或者在 thisthat 中找到,則未定義將選擇哪個值.例如:碰撞多個合並結果:

// key `3` collides between a result of merging keys `1` and `2`
val left = HashMap(1 -> 1, 2 -> 2)
val right = HashMap(1 -> 1, 2 -> 2)
val merged = left.merged(right){ case (_, (_, v1)) => 3 -> v1 }
  // HashMap(3 -> 2) is returned, but it could also have returned HashMap(3 -> 1)

與其他鍵合並的碰撞結果:

// key `2` collides between a result of merging `1`, and existing key `2`
val left = HashMap(1 -> 1, 2 -> 1)
val right = HashMap(1 -> 2)
val merged = left.merged(right)((_,_) => 2 -> 3)
  // HashMap(2 -> 1) is returned, but it could also have returned HashMap(2 -> 3)

例子:

val left = HashMap(1 -> 1, 2 -> 1)
val right = HashMap(2 -> 2, 3 -> 2)
val merged = left.merged(right){ case ((k0, v0), (k1, v1)) => (k0 + k1) -> (v0 + v1) }
  // HashMap(1 -> 1, 3 -> 2, 4 -> 3)

源碼:

HashMap.scala

相關用法


注:本文由純淨天空篩選整理自scala-lang.org大神的英文原創作品 HashMap.merged。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。