Привет ребята!

Что ж, как писал в прошлом посте, теперь мы приступаем к изучению массивов и списков в Котлине.

Массивы и список

У нас есть два типа массивов в Котлине:

Изменяемые массивы: вы можете изменять элементы в любом месте и изменять размер массива.

fun main(args: Array<String>) {
    //Mutable List we can change values and redim the array
    var ListB = arrayListOf("Kotlin", "Python", 2, 3, 4.50)
}

Неизменяемые массивы: вы не можете изменять элементы в любой позиции и не можете изменять размер массива, этот тип должен быть объявлен с помощью val.

fun main(args: Array<String>) {

    //Inmutable we can change the values but not redim the array

    val ArrayA = ListOf("Kotlin", "Python", 2, 3, 4.50)
}

Тип массивов

В Kotlin есть много типов массивов, которые могут объявлять ListOf, ArrayOf, ArrayListOf, DoubleArrayOf, IntArrayOf и другие, вам нужно обратить особое внимание на ListOf, потому что это ключевое слово создаст неизменяемый список, который нельзя изменить или изменить какой-либо элемент в списке. .

ListOf :этот тип не имеет методов добавить и удалить,вы можете использовать этот тип, когда знаете размер списка и каждый элемент, который содержит ListOf, является неизменяемым объектом, следующие не компилируются в Kotlin, вы можете скопировать и вставить в свою IDE для проверки.

fun main(args: Array<String>) {
    //immutable List we can't change values or redim the list
    val ListB = ListOf("Kotlin", "Python", 2, 3, 4.50)
    ListB.add("New Element")
    ListB.remove("Python")
}

ArrayOf:в основном этот тип имеет то же поведение, что и ListOf, разница в том, что с этим типом объекта вы можете изменить значение в существующей позиции в массиве, но вы не можете изменить размер то же самое, если вы хотите изменить размер, вам нужно скопировать исходный массив в новый массив большего размера, следующий код не компилируется, потому что я пытаюсь изменить размер массива.

fun main(args: Array<String>) {
    //immutable List we can't change values or redim the list
    val ListB = ArrayOf("Kotlin", "Python", 2, 3, 4.50)
    ListB.add("New Element")
    ListB[0] = "Java"
}

ArrayListOf: этот тип создает изменяемый объект List, вы можете изменять размер этого объекта по коду, у него есть методы удаления и добавления для выполнения этих операций, следующий код отлично компилируется в Kotlin.

fun main(args: Array<String>) {
    //immutable List we can't change values or redim the list
    val ListB = ArrayListOf("Kotlin", "Python", 2, 3, 4.50)
    ListB.add("New Element")
    ListB[0] = "Java"
}

Обычно используемые методы массива

Добавить: добавить новый элемент в объект с таким же размером, это доступно только для объектов ArrayListOf.

ListB.add("New Element")

remove: с помощью этого метода вы можете удалить каждый элемент в любой позиции в массиве, он доступен только для объектов ArrayListOf.

ListB.remove("New Element")

size: получить длину массива, доступную для всех объектов массива.

ListB.size

subList: выводит подсписок диапазона выбранных элементов, доступный только для элементов ListOf и ArrayListOf.

ListB.subList(3, 5)

isEmpty(): проверьте, пуст ли массив, он доступен для всех элементов массива.

ListB.isEmpty()

содержит: поиск в массиве элемента, соответствующего заданному значению, доступному для всех объектов массива.

ListB.contains(4.50)

max: возвращает элемент максимального значения в списке.

ListB.max()

min: возвращает элемент минимального значения в списке.

ListB.min()

обратный: возвращает тот же список, но в обратном порядке.

ListB.reversed()

Понимание списка

Я написал здесь самые полезные, на мой взгляд.

reduce: принимает список элементов и возвращает одно значение, применяя к списку определенную операцию.

var ListA = 1..100000
var sum = ListA.reduce { x, i -> i + x }
println(sum)

fold: то же самое, что и reduce, но этот тип начинается с явного значения, указанного в операции, reduce начинается с первого элемента списка, но "fold" начинается с явно заданной позиции.

var ListA = 1..100000
var sum = ListA.fold(1000) { x, i -> i + x }
println(sum)

карта:применяет операцию к каждому элементу в списке.

var ListA = 1..10
var map = ListA.map { it * 3 }
println(map)

фильтр: возвращает новую карту, содержащую все пары "ключ-значение", соответствующие заданному условию.

var ListA = 1..10
var filter = ListA.filter { it % 3 == 0 }
println(filter)

Sumby: возвращает сумму всех значений, полученных функцией преобразования из элементов в коллекции.

ListA = 1..10
var sumby = ListA.sumBy { it % 5 }
println(sumby)

any: возвращает true, если хотя бы один элемент соответствует заданному предикату.

ListA = 1..10
println(ListA.any { it > 5 })

all: возвращает true, если все элементы соответствуют заданному предикату.

ListA = 1..10
println(ListA.all { it % 6 == 0})

если вы хотите узнать больше, вы можете просмотреть эту запись https://antonioleiva.com/collection-operations-kotlin/. Я рекомендую вам это!

Это все на эти выходные, на следующих будет обзор условных выражений и циклов, удачных выходных, не ложитесь спать, продолжайте учиться и наслаждайтесь Kotlin.

см. следующую запись: https://medium.com/@yosefeliyahu/become-a-kotlin-programmer-part-3-736393bdcfca