この行:var counter : Integer = jm.get(ls)
以下のコードでは、nullにする必要がある場合は0の整数を返します。なぜこれが起こっているのですか?hashmapのgetメソッドがnullを返さない
文書によると、要素が見つからない場合、HashMapのgetメソッドはnullを返します。以下のコードは、リストあなたが文字列値はのIntであるように、キーを使用しているMapインタフェースでここ
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)
}
}
}
これは単なる推測ですが、Scalaの 'Int'のデフォルト値は' null'ではなく0であると私は考えています。 'null.asInstanceOf [Int]'は '0'を返します。値が見つからない場合、 'null'は' 0'に変わります... –
あなたの質問には直接関係しませんが、リスト内の項目の出現を数える必要がある場合は[このディスカッション] (http://stackoverflow.com/questions/11448685/scala-how-can-i-count-the-number-of-occurrences-in-a-list) – mariosangiorgio
上記のコードでは、 'jm'の' String'は、それでも動作します。 'jm.get(1)'は私に '0'を返します。 jmがHashMapのString、Intの場合、どのようにIntを取るのですか? – Jatin