簡體   English   中英

Scala Spark從HashMap獲取元素

[英]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 
  • DenseVector.values獲取基礎值(數組)
  • Array.deep比較數組。

    Array(1、2、3)== Array(1、2、3)得出false

    Array(1、2、3).deep == Array(1、2、3).deep產生true

在Map [A​​rray [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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM