我試圖做類似下面在Scala中,如何檢查泛型HashMap是否包含特定的鍵?
def defined(hash: HashMap[T, U], key: [T) {
hash.contains(key)
}
以上不編譯,因爲我的語法不正確。是否有可能檢查未知類型的HashMap是否包含給定的鍵?
我試圖做類似下面在Scala中,如何檢查泛型HashMap是否包含特定的鍵?
def defined(hash: HashMap[T, U], key: [T) {
hash.contains(key)
}
以上不編譯,因爲我的語法不正確。是否有可能檢查未知類型的HashMap是否包含給定的鍵?
除了流浪「[」我不認爲你有語法錯誤。這和你需要在你的大括號「=」之前,或者該函數不會返回布爾值。而且由於只有一個表情,無需括號...
import scala.collection.mutable._
object Main extends App {
def defined[T,U](hash: HashMap[T, U], key: T) = hash.contains(key)
val m = new HashMap[String,Int]
m.put("one", 1)
m.put("two", 2)
println(defined(m, "one"))
println(m contains "two")
println(defined(m, "three"))
}
哦,是的,我添加了方法的類型參數。 –
也許是你的解決辦法是這樣的:
def detect[K,V](map : Map[K,V], value : K ) : Boolean = {
map.keySet.contains(value)
}
您申報方法名稱後的通用參數,然後使用他們作爲你參數的類型。
爲什麼要調用'keySet'? – axel22
有沒有必要定義自己的;因爲所有Map
秒,所有HashMap
S IN尤其是PartialFunction
S,你可以使用isDefinedAt
方法:
scala> val map = HashMap(1->(), 2->())
map: scala.collection.mutable.HashMap[Int,Unit] = Map(1 ->(), 2 ->())
scala> map.isDefinedAt(2)
res9: Boolean = true
scala> map.isDefinedAt(3)
res10: Boolean = false
還有就是contains
方法,特別是對MapLike
對象,但做同樣的事情。
從今天起,您已成爲http://stackoverflow.com/tags/scala/topusers上的第8位全職頂級訪問者。可能你可以回答你自己的問題嗎?這是一個真正的建議,我發現我通過回答關於SO的問題學到了更多。除非你在競爭中成爲頂級提問者...... – huynhjl
所以你說你的策略是優化每單位時間消耗的知識積累? – deltanovember
是的,我認爲是。 – huynhjl