Функция 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
,
которая преобразует коллекцию в массив