如何检查数组数组是否包含 Scala 中的特定数组?
How to check if an array of arrays contains a specific array in 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 中的多维数组是否包含特定数组?
我已经看到这对元组是可能的,但对数组是不可能的。
除非您需要原始性能,由适当的 和 jmh 标识,或者需要 Java 互操作,否则请尽量避免使用 Array
,而是使用适当的 Scala 集合,例如 List
:
List(List(1,2), List(2,1)).contains(List(1,2)) // res2: Boolean = true
如果您必须使用 Array
,请像这样尝试组合 exists
和 sameElements
test.exists(_.sameElements(Array(1,2))) // res1: Boolean = true
Why doesn't Array's == function return true for Array(1,2) == Array(1,2)?
您可以使用 sameElements
:
test.exists(_.sameElements(Array(1, 2)))
在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 中的多维数组是否包含特定数组?
我已经看到这对元组是可能的,但对数组是不可能的。
除非您需要原始性能,由适当的 Array
,而是使用适当的 Scala 集合,例如 List
:
List(List(1,2), List(2,1)).contains(List(1,2)) // res2: Boolean = true
如果您必须使用 Array
,请像这样尝试组合 exists
和 sameElements
test.exists(_.sameElements(Array(1,2))) // res1: Boolean = true
Why doesn't Array's == function return true for Array(1,2) == Array(1,2)?
您可以使用 sameElements
:
test.exists(_.sameElements(Array(1, 2)))