The Kotlin Array
class offers asList()
, toList()
, and toMutableList()
methods. The first two methods both return a List
and are described in the Kotlin reference as follows:
asList()
returns a List
that wraps the original Array
.toList()
returns a List
containing all elements [of the original Array
].These methods appear interchangeable. How do these two methods differ in practice?
The list created with asList
keeps a reference to the original Array
.
The list created with toList
/toMutableList
is backed by a copy of the original Array
.
asList
The asList
function creates a list that reuses the same Array
instance, which implies that changes to the original array also have impact on the List
:
val arr = arrayOf(1, 2, 3)
val l1 = arr.asList()
arr[0] = 4
println(l1) // [4, 2, 3]
toList
This isn't the case for toList
/toMutableList
since the array is copied:
val arr = arrayOf(1, 2, 3)
val l2 = arr.toList()
arr[0] = 4
println(l2) // [1, 2, 3]
The Kotlin source code can be found here.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments