When you create an object and assign a reference to that object to List_A, a memory is allocated for that object and it has some memory address, say @eae072e. List_A is a reference to that object. When you create another lista variable List_B and assign to it the reference to List_A, they both refer to the same address in memory @eae072e. So when you use one of them to manipulate with data, this manipulation will be reflected in both of them - in List_A and List_B.
To avoid it new instance of List_B should be created:
var List_B: MutableList<String> = ArrayList<String>() List_B.addAll(List_A) And then you can clear the list List_A and it not be reflected in List_B:
List_A.clear() // List_A is empty, List_B will contain items