asReversed

Common
JVM
JS
Native
1.0
fun <T> List<T>.asReversed(): List<T>

Returns a reversed read-only view of the original List. All changes made in the original list will be reflected in the reversed one.

import samples.assertPrints

fun main(args: Array<String>) {
//sampleStart
val original = mutableListOf('a', 'b', 'c', 'd', 'e')
val originalReadOnly = original as List<Char>
val reversed = originalReadOnly.asReversed()

println(original) // [a, b, c, d, e]
println(reversed) // [e, d, c, b, a]

// changing the original list affects its reversed view
original.add('f')
println(original) // [a, b, c, d, e, f]
println(reversed) // [f, e, d, c, b, a]

original[original.lastIndex] = 'z'
println(original) // [a, b, c, d, e, z]
println(reversed) // [z, e, d, c, b, a]
//sampleEnd
}
Common
JVM
JS
Native
1.0
@JvmName("asReversedMutable") fun <T> MutableList<T>.asReversed(): MutableList<T>

Returns a reversed mutable view of the original mutable List. All changes made in the original list will be reflected in the reversed one and vice versa.

import samples.assertPrints

fun main(args: Array<String>) {
//sampleStart
val original = mutableListOf(1, 2, 3, 4, 5)
val reversed = original.asReversed()

println(original) // [1, 2, 3, 4, 5]
println(reversed) // [5, 4, 3, 2, 1]

// changing the reversed view affects the original list
reversed.add(0)
println(original) // [0, 1, 2, 3, 4, 5]
println(reversed) // [5, 4, 3, 2, 1, 0]

// changing the original list affects its reversed view
original[2] = -original[2]
println(original) // [0, 1, -2, 3, 4, 5]
println(reversed) // [5, 4, 3, -2, 1, 0]
//sampleEnd
}