2017-10-12 38 views

回答

4

使用withDefaultValue創建地圖後:

import scala.collection.mutable 

val map = mutable.Map[Int,(Int, Int)]().withDefaultValue((0, 0)) 
+0

很好的解決方案!另一個天真的問題,我將元組更改爲數組,使其元素可以像這個映射(0)+ = 1一樣遞增。但是聲明var map = mutable.Map [Int,Array [Int,Int]]()。withDefaultValue(Array [0,0])會導致錯誤 – user1269298

+0

嘗試'var map = mutable.Map [Int,Array [ Int)]]()。withDefaultValue(Array((0,0)))'如果你想它是一個_tuples_的數組。或者'var map = mutable.Map [Int,Array [Int]]()。withDefaultValue(Array(0))''如果你想讓它成爲_ints_數組。 –

+0

謝謝,這正是我需要的! var map = mutable.Map [Int,Array [Int]]()。withDefaultValue(Array(0,0)) – user1269298

1

你可能lookign爲.getOrElseUpdate這需要關鍵,如果給定值不存在更新。

scala> val googleMap = Map[Int, (Int, Int)]().empty 
googleMap: scala.collection.mutable.Map[Int,(Int, Int)] = Map() 

scala> googleMap.getOrElseUpdate(100, (0, 0)) 
res3: (Int, Int) = (0,0) 

scala> googleMap 
res4: scala.collection.mutable.Map[Int,(Int, Int)] = Map(100 -> (0,0)) 

您也可以含蓄地傳遞orElse部分,

scala> implicit val defaultValue = (0, 0) 
defaultValue: (Int, Int) = (0,0) 

scala> googleMap.getOrElseUpdate(100, implicitly) 
res8: (Int, Int) = (0,0) 

scala> googleMap 
res9: scala.collection.mutable.Map[Int,(Int, Int)] = Map(100 -> (0,0)) 
+0

很高興知道。感謝分享! – user1269298

相關問題