代码之家  ›  专栏  ›  技术社区  ›  lannyf

如何验证list的实例不是另一个list实例

  •  0
  • lannyf  · 技术社区  · 6 年前

    我有一张单子

    var theDataList: List<Data> // populated with some data
    

    并复制了一份

    val copy = theDataList.toMutableList()
    

    在代码的下游,它想验证它是副本还是原件

    这个 .hashCode() 两者返回相同

    如果只是想用日志打印出来,怎么办?

    这个 Log.d("+++", "theDataList: ${theDataList.hashCode()}, copy: ${copy.hashCode()"}) 打印出相同的号码。

    以及 Log.d("+++", "copy: ${copy}") 打印出列表内容

    0 回复  |  直到 6 年前
        1
  •  3
  •   Willi Mentzel user670265    6 年前

    问题:

    两个列表的哈希代码是相同的,因为它基于列表中的数据,这是相同的。

    解决方案:

    你真正想要的是比较两个列表的引用。你可以用科特林的 referential equality operator === .

    theDataList === copy // false
    

    在jvm上没有可以依赖的id/散列来按您所需的方式标识对象。要了解更多信息,请查看 here 是的。

        2
  •  2
  •   Eugene Petrenko    6 年前

    使用 === 比较引用的运算符相同(不调用 equals 方法)

    推荐文章