7

この行 :var counter : Integer = jm.get(ls)以下のコードでは、null である必要がある場合に値 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)
    }
  }

}
4

2 に答える 2

1

Scala ではIntAnyVal型 (プリミティブの種類) です。null にすることはできません。

于 2013-08-02T10:34:43.613 に答える