Функция slice
Функция slice возвращает новую коллекцию, содержащую элементы
из исходной коллекции по указанным индексам или в указанном диапазоне.
Функция доступна для массивов Array, списков List
и других коллекций, поддерживающих доступ по индексу.
Синтаксис
fun <T> Iterable<T>.slice(indices: IntRange): List<T>
fun <T> Iterable<T>.slice(indices: Iterable<Int>): List<T>
fun <T> Array<T>.slice(indices: IntRange): List<T>
fun <T> Array<T>.slice(indices: Iterable<Int>): List<T>
Пример
Получим часть списка с индексами от 1 до 3:
val list = listOf('a', 'b', 'c', 'd', 'e')
val res = list.slice(1..3)
println(res)
Результат выполнения кода:
List ['b', 'c', 'd']
Пример
Получим часть массива по конкретным индексам:
val array = arrayOf(1, 2, 3, 4, 5)
val indices = listOf(0, 2, 4)
val res = array.slice(indices)
println(res)
Результат выполнения кода:
List [1, 3, 5]
Пример
Получим часть строки с помощью slice:
val str = "abcde"
val res = str.toList().slice(0..2)
println(res)
Результат выполнения кода:
List ['a', 'b', 'c']
Пример
Использование slice с набором индексов:
val numbers = listOf(10, 20, 30, 40, 50, 60)
val selectedIndices = setOf(1, 3, 5)
val res = numbers.slice(selectedIndices)
println(res)
Результат выполнения кода:
List [20, 40, 60]
Для каких типов коллекций работает
Функция slice работает со следующими типами коллекций:
Array- массивы любых типовList- списки (как изменяемые, так и неизменяемые)Iterable- любые итерируемые коллекции с доступом по индексуCharSequence- после преобразования к списку символов
Не работает с:
Set- множества (не поддерживают доступ по индексу)Map- словари (не поддерживают доступ по индексу)