Deep copy of list with objects in Kotlin

I am new to kotlin and I am trying to make a copy of a list of objects.The problem I am having is that when I change items in the new copy, the old list gets changed as well. This is the object:

class ClassA(var title: String?, var list: ArrayList<ClassB>, var selected: Boolean)
class ClassB(val id: Int, val name: String) 

I tried doing this, but it doesn't work:

val oldList:ArrayList<ClassA>

val newList :ArrayList<ClassA> = ArrayList()


  • That's bacause you are adding all the object references to another list, hence you are not making a proper copy, you have the same elements in two list. If you want diferents list and diferent references, you must clone every object in a new list:

    public data class Person(var n: String)
    fun main(args: Array<String>) {
        //creates two instances
        var anna = Person("Anna")
        var Alex =Person("Alex")
        //add to list
        val names = arrayOf(anna , Alex)
        //generate a new real clone list
        val cloneNames ={it.copy()}
        //modify first list
        cloneNames.get(0).n = "Another Anna clone"
    [Person(n=Anna), Person(n=Alex)]
    [Person(n=Another Anna clone), Person(n=Alex)]