Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark从HashMap获取元素_Scala_Hashmap_Apache Spark - Fatal编程技术网

Scala Spark从HashMap获取元素

Scala Spark从HashMap获取元素,scala,hashmap,apache-spark,Scala,Hashmap,Apache Spark,我有一个HashMap: 还有一个数组: 我从该数组中获取一个元素: 并要检查地图中是否存在: 然而,我错了。为什么?breeze.linalg.DenseVector是一个“类”,因此可以通过实例相等性进行比较: class C(i: Int) new C(1) == new C(1) yields false 如果您看到一些代码比较scala中的两个实例,那么它们在“case类”上工作,因为 它们有一个“特殊的equals/hashCode”方法,或者在处理“普通类”时实现自己的equa

我有一个HashMap:

还有一个数组:

我从该数组中获取一个元素:

并要检查地图中是否存在:


然而,我错了。为什么?

breeze.linalg.DenseVector是一个“类”,因此可以通过实例相等性进行比较:

class C(i: Int)
new C(1) == new C(1) yields false
如果您看到一些代码比较scala中的两个实例,那么它们在“case类”上工作,因为 它们有一个“特殊的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 

警告:映射上的“find”将映射视为元组的顺序集合,并测试每个元素,直到找到匹配项为止,如果没有匹配项,则返回“None”。这基本上与从@maasg

DenseVector获得一个列表注释是case类?来自Spark breeze.linalg包的DenseVector。@Sergey Lagutin我的代码在这里:所以请随意测试它。看起来hashCode方法没有为您的键类重写。检查一下我的假设。我在提供的代码中没有看到任何“pointsMap…”——请注意,按照SO指南,应该向代码提供问题,以避免外部源的更改会使问题无效——使其他人无法使用。那么,您可以在问题中发布代码吗?但是HashMap没有map.keys.deep方法。那么我该如何比较呢?@bob我添加了一个在地图中查找值的示例。警告:地图上的“查找”将地图视为元组的顺序集合,并测试每个元素,直到找到匹配项为止,如果没有匹配项,则返回“无”。这基本上与列出一份清单是一样的。@maasg good catch!-如何避免我只能考虑将DenseVector封装在一个覆盖hashMap/equals的类中?我本来想看一下代码,但似乎它变了,因为我没有找到问题中提到的代码。在Spark中,拥有地图往往没有意义。
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(...)