Dòng này: var counter : Integer = jm.get(ls)
trong mã dưới đây trả về một số nguyên của giá trị 0 khi nó phải là rỗng. Tại sao điều này xảy ra?lấy phương thức hashmap không trả về giá trị rỗng
Theo tài liệu, phương thức get của HashMap trả về null nếu không tìm thấy phần tử. Đoạn code dưới đây là đếm số lượng các yếu tố trong một danh sách
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)
}
}
}
Đó chỉ là phỏng đoán, nhưng tôi nghĩ * rằng giá trị mặc định của 'Int' trong Scala là 0, không phải' null'. Thậm chí 'null.asInstanceOf [Int]' cho '0'. Vì vậy, khi giá trị không được tìm thấy, 'null' thay đổi thành' 0' ... –
Nó không liên quan trực tiếp đến câu hỏi của bạn, nhưng nếu bạn cần đếm số lần xuất hiện của các mục trong danh sách, hãy xem [thảo luận này] (http://stackoverflow.com/questions/11448685/scala-how-can-i-count-the-number-of-occurrences-in-a-list) – mariosangiorgio
Mã trên, ngay cả khi tôi sử dụng 'Int' thay vì 'String' trong' jm', nó vẫn hoạt động. 'jm.get (1)' trả về tôi '0'. Làm thế nào là jm lấy Int khi nó là một HashMap của String, Int – Jatin