我正在统计列表中的网址数量。 为了实现这一点,我添加到一个地图,其中的关键是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'。 –