Diese Zeile: var counter : Integer = jm.get(ls)
in unter Code gibt eine Ganzzahl von Wert 0 zurück, wenn es null sein sollte. Warum passiert das?get Methode von hashmap gibt null zurück
Gemäß der Dokumentation gibt die get-Methode von HashMap null zurück, wenn das Element nicht gefunden wird. Der folgende Code wird die Anzahl der Elemente in einer Liste zu zählen
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)
}
}
}
Das ist nur eine Vermutung, aber ich denke *, dass der Standardwert von "Int" in Scala 0 ist, nicht "null". Sogar 'null.asInstanceOf [Int] 'ergibt' 0 '. Wenn der Wert nicht gefunden wird, ändert sich 'null' in' 0' ... –
Es steht nicht direkt mit Ihrer Frage in Verbindung, aber wenn Sie das Vorkommen von Elementen in einer Liste zählen müssen, schauen Sie sich [diese Diskussion] an. (http://stackoverflow.com/questions/11448685/scala-how-can-i-count-the-number-of-occurrences-in-a-list) – mariosangiorgio
Oberhalb des Codes, auch wenn ich 'Int' anstelle von verwenden 'String' in' jm', es funktioniert immer noch. 'jm.get (1)' gibt mir '0' zurück. Wie nimmt jm Int, wenn es eine HashMap von String ist, Int – Jatin