首页 > 解决方案 > 如何检查数组数组是否包含scala中的特定数组?

问题描述

在 scala 中,如何检查 Int 的多维数组是否包含数组,例如:

val test = Array(Array(1, 2), Array(2, 1))

test.contains(Array(1, 2)) // this results to false

test.contains(test(0)) // this results to true

因此,似乎 scala 也在比较对象引用,在第一种情况下,尽管具有相同的元素,但它是一个不同的对象,因此返回 false。这是正确的吗?

在第二种情况下,我正在测试列表中已包含的相同对象之一,因此返回 true。

我怎样才能达到预期的结果,即检查 Scala 中的多维数组是否包含特定数组?

我已经看到这对于元组是可能的,但对于数组却不是。

标签: scalascala-collections

解决方案


除非您需要原始性能,通过使用 jmh的适当测量Array来确定,或者需要 Java 互操作,否则请尽量避免使用适当的 Scala 集合,例如List

List(List(1,2), List(2,1)).contains(List(1,2))  // res2: Boolean = true

如果你必须使用Array,然后尝试组合existssameElements像这样

test.exists(_.sameElements(Array(1,2)))         // res1: Boolean = true

为什么 Array 的 == 函数不为 Array(1,2) == Array(1,2) 返回 true?


推荐阅读