我正在統計列表中的網址數量。 爲了實現這一點,我添加到一個地圖,其中的關鍵是URL和值是當前的計數器。每次遇到相同的密鑰,我都會增加計數器。下面是代碼:將可變哈希映射轉換爲不可變哈希映射
var m = new HashMap[String, Int]
for(l <- MyList){
val url = l.getUrl()
var currentCount : Option[Int] = m.get(url)
currentCount match {
case Some(value) =>
var currentCount = value + 1
m = m ++ Map(url -> currentCount)
case None =>
m = m ++ Map(url -> 1)
}
}
我開始用一個不變的地圖,發現我每次需要時重新分配映射,以與相關聯的密鑰保持計數器值。有沒有解決方案使用不可變的地圖完成上述相同的任務?
可你expla在這個函數中發生了什麼:'(i =>(i._1,i._2.size))'? –
我用更多的解釋更新了答案 – jcern
你也可以使用'mapValues'。 –