Привет ребята!
Что ж, как писал в прошлом посте, теперь мы приступаем к изучению массивов и списков в Котлине.
Массивы и список
У нас есть два типа массивов в Котлине:
Изменяемые массивы: вы можете изменять элементы в любом месте и изменять размер массива.
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