АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
494 of 1310 menu
Бесплатный тренинг по JavaScript: работа с Drag-and-Drop. Начало 2 октября. Жми для записи!

Функция copyOf

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

Импорт

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

Синтаксис

fun <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:

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

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

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

Пример

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

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

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

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

Пример

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

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

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

Resized: [a, b, c]

Пример

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

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

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

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

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

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

  • Array - типизированные массивы
  • ByteArray - массивы байтов
  • ShortArray - массивы коротких целых чисел
  • IntArray - массивы целых чисел
  • LongArray - массивы длинных целых чисел
  • FloatArray - массивы чисел с плавающей точкой одинарной точности
  • DoubleArray - массивы чисел с плавающей точкой двойной точности
  • BooleanArray - массивы булевых значений
  • CharArray - массивы символов

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

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

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