Функция copyOf

Функция copyOf создает новый массив, который является копией исходного массива. Может использоваться для создания полной копии массива или копии с измененным размером. При увеличении размера новые элементы заполняются значениями по умолчанию для типа массива.

Импорт

kotlin// Функция доступна без импорта для массивов

Синтаксис

kotlinfun <T> Array<T>.copyOf(): Array<T>
fun <T> Array<T>.copyOf(newSize: Int): Array<T?>
fun ByteArray.copyOf(): ByteArray
fun ByteArray.copyOf(newSize: Int): ByteArray
fun ShortArray.copyOf(): ShortArray
fun ShortArray.copyOf(newSize: Int): ShortArray
fun IntArray.copyOf(): IntArray
fun IntArray.copyOf(newSize: Int): IntArray
fun LongArray.copyOf(): LongArray
fun LongArray.copyOf(newSize: Int): LongArray
fun FloatArray.copyOf(): FloatArray
fun FloatArray.copyOf(newSize: Int): FloatArray
fun DoubleArray.copyOf(): DoubleArray
fun DoubleArray.copyOf(newSize: Int): DoubleArray
fun BooleanArray.copyOf(): BooleanArray
fun BooleanArray.copyOf(newSize: Int): BooleanArray
fun CharArray.copyOf(): CharArray
fun CharArray.copyOf(newSize: Int): CharArray

Пример

Создадим полную копию массива типа Array<String>:

kotlinval original = arrayOf("a", "b", "c", "d", "e")
val copy = original.copyOf()
println("Original: ${original.contentToString()}")
println("Copy: ${copy.contentToString()}")

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

kotlinOriginal: [a, b, c, d, e]
Copy: [a, b, c, d, e]

Пример

Создадим копию массива с увеличением размера:

kotlinval original = intArrayOf(1, 2, 3, 4, 5)
val resized = original.copyOf(8)
println("Resized: ${resized.contentToString()}")

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

kotlinResized: [1, 2, 3, 4, 5, 0, 0, 0]

Пример

Создадим копию массива с уменьшением размера:

kotlinval original = charArrayOf('a', 'b', 'c', 'd', 'e')
val resized = original.copyOf(3)
println("Resized: ${resized.contentToString()}")

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

kotlinResized: [a, b, c]

Пример

Для типизированных массивов при увеличении размера новые элементы заполняются null:

kotlinval original = arrayOf("a", "b", "c")
val resized = original.copyOf(5)
println("Resized: ${resized.contentToString()}")

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

kotlinResized: [a, b, c, null, null]

Для каких типов коллекций работает

Функция copyOf работает только для массивов:

Для обычных коллекций (List, Set, Map) функция copyOf не доступна. Вместо этого используются другие методы создания копий.

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

  • функцию copyOfRange,
    которая создает копию части массива
  • функцию contentToString,
    которая преобразует массив в строковое представление
  • функцию contentEquals,
    которая сравнивает содержимое двух массивов
  • функцию toTypedArray,
    которая преобразует коллекцию в массив