Тип ByteArray

Тип ByteArray представляет собой массив примитивных значений типа Byte. Это эффективная структура данных для работы с бинарными данными, файлами, сетевыми пакетами и другими низкоуровневыми операциями. Размер массива фиксирован при создании и не может быть изменен.

Создание ByteArray

kotlin// Создание массива заданного размера (заполняется нулями)
val byteArray1 = ByteArray(5)

// Создание массива с помощью фабричной функции
val byteArray2 = byteArrayOf(1, 2, 3, 4, 5)

// Создание массива с инициализацией через лямбду
val byteArray3 = ByteArray(3) { index -> (index * 10).toByte() }

Доступ к элементам

Доступ к элементам массива осуществляется через оператор [] или методы get и set:

kotlinval bytes = byteArrayOf(10, 20, 30, 40, 50)

// Получение элемента по индексу
val firstElement = bytes[0]
val secondElement = bytes.get(1)

// Установка элемента по индексу
bytes[2] = 35
bytes.set(3, 45)

println("Array: ${bytes.contentToString()}")

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

kotlinArray: [10, 20, 35, 45, 50]

Свойства и основные методы

kotlinval bytes = byteArrayOf(5, 10, 15, 20, 25)

// Получение размера массива
val size = bytes.size

// Получение первого и последнего элемента
val first = bytes.first()
val last = bytes.last()

// Проверка на пустоту
val isEmpty = bytes.isEmpty()
val isNotEmpty = bytes.isNotEmpty()

println("Size: $size, First: $first, Last: $last")
println("Is empty: $isEmpty, Is not empty: $isNotEmpty")

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

kotlinSize: 5, First: 5, Last: 25
Is empty: false, Is not empty: true

Итерация по массиву

kotlinval bytes = byteArrayOf(1, 2, 3, 4, 5)

// Итерация с помощью for
for (byte in bytes) {
  println("Byte: $byte")
}

// Итерация с помощью forEach
bytes.forEach { byte ->
  println("Element: $byte")
}

// Итерация с индексом
for (index in bytes.indices) {
  println("Index: $index, Value: ${bytes[index]}")
}

Преобразование в другие типы

kotlinval bytes = byteArrayOf(72, 101, 108, 108, 111) // ASCII коды для "Hello"

// Преобразование в строку
val str = String(bytes)
println("String: $str")

// Преобразование в список
val list = bytes.toList()
println("List: $list")

// Преобразование в множество
val set = bytes.toSet()
println("Set: $set")

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

kotlinString: Hello
List: [72, 101, 108, 108, 111]
Set: [72, 101, 108, 111]

Поиск и фильтрация

kotlinval bytes = byteArrayOf(10, 20, 30, 40, 50, 20, 10)

// Поиск первого вхождения
val first20 = bytes.indexOf(20)
val last10 = bytes.lastIndexOf(10)

// Поиск элемента по условию
val firstGreater25 = bytes.find { it > 25 }
val allGreater15 = bytes.filter { it > 15 }

println("First 20 at index: $first20")
println("Last 10 at index: $last10")
println("First greater than 25: $firstGreater25")
println("All greater than 15: $allGreater15")

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

kotlinFirst 20 at index: 1
Last 10 at index: 6
First greater than 25: 30
All greater than 15: [20, 30, 40, 50, 20]

Копирование и преобразование

kotlinval original = byteArrayOf(1, 2, 3, 4, 5)

// Копирование массива
val copy = original.copyOf()

// Копирование части массива
val partialCopy = original.copyOfRange(1, 4)

// Преобразование с помощью map
val doubled = original.map { it * 2 }.toByteArray()

println("Original: ${original.contentToString()}")
println("Copy: ${copy.contentToString()}")
println("Partial copy: ${partialCopy.contentToString()}")
println("Doubled: ${doubled.contentToString()}")

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

kotlinOriginal: [1, 2, 3, 4, 5]
Copy: [1, 2, 3, 4, 5]
Partial copy: [2, 3, 4]
Doubled: [2, 4, 6, 8, 10]

Сортировка

kotlinval bytes = byteArrayOf(5, 3, 8, 1, 2)

// Сортировка исходного массива
bytes.sort()
println("Sorted: ${bytes.contentToString()}")

// Сортировка в обратном порядке
bytes.sortDescending()
println("Descending: ${bytes.contentToString()}")

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

kotlinSorted: [1, 2, 3, 5, 8]
Descending: [8, 5, 3, 2, 1]

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

  • тип Byte,
    который представляет собой примитивный байт
  • тип IntArray,
    который представляет массив целых чисел
  • тип CharArray,
    который представляет массив символов
  • тип Array,
    который представляет универсальный массив объектов