[英]Scala Spark get element from HashMap
我有一個HashMap:
還有一個數組:
我從該數組中獲取一個元素:
並想檢查它是否存在於地圖中:
但是,我弄錯了。 為什么?
breeze.linalg.DenseVector是一個“類”,因此通過實例相等性對其進行比較:
class C(i: Int)
new C(1) == new C(1) yields false
如果您在scala中看到一些帶有比較兩個實例的代碼,則它們在“案例類”上工作,因為它們具有“特殊equals / hashCode”方法(或者在“普通類”上工作時實現了自己的equals / hashCode)。
case class CC(i: Int)
new CC(1) == new CC(1) yields true
我認為你應該使用
<DenseVector instance>.values.deep == <DenseVecotor instance>.values.deep
Array.deep比較數組。
Array(1、2、3)== Array(1、2、3)得出false
Array(1、2、3).deep == Array(1、2、3).deep產生true
在Map [Array [Int],String]中查找值的示例:
val m = Map(Array(1, 2) -> "one", Array(1, 2) -> "two")
m.find(_._1 == Array(1, 2)) yields None
m.find(_._1.deep == Array(1, 2).deep) yields Some(...)
警告:在地圖上“查找”將地圖視為元組的順序集合,並測試每個元素,直到找到匹配項,然后返回“無”則沒有匹配項。 這與擁有列表基本相同(@maasg的評論)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.