kotlinhash-code-uniqueness

How to verify an instance of a List is not another List instance?


I have a list

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

and made a copy of it

val copy = theDataList.toMutableList()

downstream in the code it would like to verify whether it is the copy one or the original one

the .hashCode() returns same for both

If just want to use Log to print out, how to do it?

the Log.d("+++", "theDataList: ${theDataList.hashCode()}, copy: ${copy.hashCode()"}) print out same number.

And Log.d("+++", "copy: ${copy}") prints out the list content


Solution

  • Problem:

    The hash code for both lists is the same because it is based on the data in the list, which is the same.

    Solution:

    What you actually want is to compare the references of both lists. You can do that with Kotlin's referential equality operator ===.

    theDataList === copy // false
    

    There is no ID/hash you can rely on to identify an object on the JVM the way you want. For more info take a look here.