В Kotlin двумерный массив — это структура данных, представляющая собой табличную структуру со строками и столбцами. По сути, это массив массивов, где каждый элемент внешнего массива сам по себе является массивом. В этой статье мы рассмотрим различные методы работы с 2D-массивами в Kotlin и приведем примеры кода, иллюстрирующие их использование.
- Создание 2D-массива:
Чтобы создать 2D-массив в Kotlin, вы можете использовать конструкторArray
и указать размеры массива. Вот пример:
val matrix = Array(3) { Array(3) { 0 } }
В этом фрагменте кода мы создаем двумерный массив 3×3 с именем matrix
и инициализируем все элементы значением 0.
- Доступ к элементам:
Чтобы получить доступ к элементам двумерного массива, вы можете использовать обозначение индексации с индексами строк и столбцов. Вот пример:
val element = matrix[rowIndex][columnIndex]
- Изменение элементов:
Чтобы изменить элемент в двумерном массиве, вы можете просто присвоить новое значение нужному индексу. Вот пример:
matrix[rowIndex][columnIndex] = newValue
- Итерация по двумерному массиву:
Чтобы перебрать все элементы двумерного массива, вы можете использовать вложенные циклы. Вот пример, который печатает все элементы:
for (i in matrix.indices) {
for (j in matrix[i].indices) {
println(matrix[i][j])
}
}
- Транспонирование двумерного массива:
Чтобы транспонировать двумерный массив, вы можете поменять местами строки и столбцы. Вот пример:
val transposedMatrix = Array(matrix[0].size) { i ->
Array(matrix.size) { j ->
matrix[j][i]
}
}
- Поиск элемента:
Чтобы найти определенный элемент в двумерном массиве, вы можете использовать вложенные циклы и сравнивать каждый элемент с целевым значением. Вот пример:
fun search(matrix: Array<Array<Int>>, target: Int): Boolean {
for (i in matrix.indices) {
for (j in matrix[i].indices) {
if (matrix[i][j] == target) {
return true
}
}
}
return false
}
- Сортировка двумерного массива.
Чтобы отсортировать двумерный массив, вы можете использовать функцииsortBy
илиsortWith
с настраиваемым компаратором. Вот пример сортировки двумерного массива по сумме каждой строки:
matrix.sortBy { it.sum() }