如何在Kotlin中比较两个数组?

拉尔斯·布伦伯格:

给定Kotlin中的一些数组

let a = arrayOf("first", "second")
val b = arrayOf("first", "second")
val c = arrayOf("1st", "2nd")

Kotlin std-lib是否有内置功能可以测试两个数组的每个元素的(值)相等性?

因此导致:

a.equals(b) // true
a.equals(c) // false

equals()false在两种情况下实际上都返回了,但是也许Kotlin有内置函数可以使用?

有静态函数,java.utils.Arrays.deepEquals(a.toTypedArray(), b.toTypedArray())但我宁愿使用实例方法,因为它与可选方法一起使用会更好。

mfulton26:

在Kotlin 1.1中,您可以使用contentEqualscontentDeepEquals比较两个数组以实现结构相等。例如:

a contentEquals b // true
b contentEquals c // false

在Kotlin 1.0中,没有“ Kotlin std-lib的内置函数来测试两个数组的每个元素的(值)相等性”。

“总是使用equals()和其他所有对象一样比较数组”(反馈请求:数据类的限制| Kotlin博客)。

因此,a.equals(b)trueab引用相同的数组时才返回

但是,您可以使用扩展功能创建自己的“可选”友好方法例如:

fun Array<*>.equalsArray(other: Array<*>) = Arrays.equals(this, other)
fun Array<*>.deepEqualsArray(other: Array<*>) = Arrays.deepEquals(this, other)

PS对“ 反馈请求:数据类的限制 ”的评论| Kotlin博客也值得一读,特别是评论39364

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章