我正在尝试使用contains(...)
来查找2D数组中是否存在数组,但是即使它在数组中,返回值也是false
。为什么以及如何使它起作用?
val obs = arrayOf (arrayOf(5, 5),arrayOf(4, 2),arrayOf(2, 3))
println(obs.contains(arrayOf(2, 3))) // false
val obs1 = arrayListOf (arrayListOf(5, 5), arrayListOf(4, 2), arrayListOf(2, 3))
println(obs1.contains(arrayListOf(2, 3))) // true
最佳答案
仅当obs.contains(arrayOf(2,3))
的引用等于arrayOf(2,3)
中的任何引用时,obs
才会产生true。换句话说,它对数组引用引用相等而不是内容相等。
您可以使用contentEquals获得所需的结果:println(obs.any { it.contentEquals(arrayOf(2,3)) }) // true
第二个版本按预期进行打印,因为对集合进行了结构比较。
您可能会发现感兴趣的What you didn’t know about arrays in Kotlin。