get hashmap的方法不返回null
这行: var counter : Integer = jm.get(ls)
在下面的代码中返回值为0的整数,当它应该为空。 为什么会发生这种情况?
根据文档,如果找不到元素,HashMap的get方法返回null。 下面的代码正在计算列表中元素的数量
import scala.collection.JavaConversions._
object Tester {
def main(args: Array[String]) {
var listOfLinks : java.util.Set[String] = new java.util.TreeSet[String]
listOfLinks.add("1")
listOfLinks.add("1")
listOfLinks.add("1")
listOfLinks.add("2")
listOfLinks.add("3")
listOfLinks.add("3")
listOfLinks.add("3")
listOfLinks.add("3")
var l: java.util.List[String] = new java.util.ArrayList[String]
var jm: java.util.Map[String, Int] = new java.util.HashMap[String, Int];
for (ls <- listOfLinks) {
var counter : Integer = jm.get(ls)
if (counter == null) {
jm.put(ls, 1)
} else {
counter = counter + 1
jm.put(ls, counter)
}
}
for(jmv <- jm){
println(jmv._1+" , "+jmv._2)
}
}
}
var jm: java.util.Map[String, Int] = new java.util.HashMap[String, Int];
在Map接口中,您将Key用作String ,值为Int 。 所以Int默认值是0。
var counter : Integer = jm.get(ls)
所以这里的计数器只能保存0的值,因为在计数器变量值中不是键。
jm.get(ls);
在Scala中, Int
是AnyVal
类型(一种原语)。 它不能为空。
上一篇: get method of hashmap is not returning null
下一篇: Automatically add private qualifier to fields in eclipse