Функция copyOfRange

Функция copyOfRange создает новый массив, содержащий элементы из указанного диапазона исходного массива. Функция работает только с массивами (Array) и не применяется к другим типам коллекций таким как List, Set или Map. В первый параметр передается начальный индекс (включительно), во второй параметр - конечный индекс (исключительно).

Синтаксис

kotlinfun <T> Array<out T>.copyOfRange(fromIndex: Int, toIndex: Int): Array<T>
kotlinfun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray
kotlinfun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray
kotlinfun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray
kotlinfun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray
kotlinfun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray
kotlinfun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray
kotlinfun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray
kotlinfun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray

Пример

Скопируем элементы с индекса 1 по 4 (исключительно) из массива символов:

kotlinval original = charArrayOf('a', 'b', 'c', 'd', 'e')
val copy = original.copyOfRange(1, 4)
println(copy.contentToString())

Результат выполнения кода:

kotlinCharArray ['b', 'c', 'd']

Пример

Скопируем элементы с индекса 2 до конца массива целых чисел:

kotlinval numbers = intArrayOf(1, 2, 3, 4, 5)
val part = numbers.copyOfRange(2, numbers.size)
println(part.contentToString())

Результат выполнения кода:

kotlinIntArray [3, 4, 5]

Пример

Скопируем часть массива строк:

kotlinval words = arrayOf("apple", "banana", "cherry", "date", "elderberry")
val slice = words.copyOfRange(1, 3)
println(slice.contentToString())

Результат выполнения кода:

kotlinArray<String> ["banana", "cherry"]

Пример

Если конечный индекс превышает размер массива, элементы будут заполнены значениями по умолчанию:

kotlinval arr = intArrayOf(1, 2, 3)
val extended = arr.copyOfRange(0, 5)
println(extended.contentToString())

Результат выполнения кода:

kotlinIntArray [1, 2, 3, 0, 0]

Примечания

Функция copyOfRange работает только с массивами различных типов. Для работы с другими типами коллекций (List, Set) используйте функцию slice или subList.

Смотрите также

  • функцию copyOf,
    которая создает копию массива
  • функцию slice,
    которая возвращает часть коллекции
  • функцию subList,
    которая возвращает представление части списка
  • функцию take,
    которая возвращает первые n элементов коллекции