Операции записи в коллекции
Изменяемые коллекции поддерживают операции для изменения содержимого коллекции, например, добавления или удаления элементов. На этой странице мы опишем операции записи, доступные для всех реализаций MutableCollection. Для более специфических операций, доступных для List и Map, см. Операции, специфичные для списков и Операции, специфичные для словарей соответственно.
Добавление элементов
Для добавления одного элемента в список или множество используйте функцию add(). Указанный объект добавляется в конец коллекции.
fun main() {
//sampleStart
val numbers = mutableListOf(1, 2, 3, 4)
numbers.add(5)
println(numbers)
//sampleEnd
}
addAll() добавляет каждый элемент объекта-аргумента в список или множество. Аргумент может быть Iterable, Sequence, или Array. Типы получателя и аргумента могут отличаться, например, вы можете добавить все элементы из Set в List.
При вызове для списков, addAll() добавляет новые элементы в том же порядке, в котором они идут в аргументе. Вы также можете вызвать addAll(), указав позицию элемента в качестве первого аргумента. Первый элемент коллекции-аргумента будет вставлен в эту позицию. Другие элементы коллекции-аргумента будут следовать за ним, сдвигая элементы получателя в конец.
fun main() {
//sampleStart
val numbers = mutableListOf(1, 2, 5, 6)
numbers.addAll(arrayOf(7, 8))
println(numbers)
numbers.addAll(2, setOf(3, 4))
println(numbers)
//sampleEnd
}
Вы также можете добавлять элементы, используя локальную версию оператора plus - plusAssign (+=). При применении к изменяемой коллекции, += добавляет второй операнд (элемент или другую коллекцию) в конец коллекции.
fun main() {
//sampleStart
val numbers = mutableListOf("one", "two")
numbers += "three"
println(numbers)
numbers += listOf("four", "five")
println(numbers)
//sampleEnd
}
Удаление элементов
Для удаления элемента из изменяемой коллекции используйте функцию remove(). remove() принимает значение элемента и удаляет одно вхождение этого значения.
fun main() {
//sampleStart
val numbers = mutableListOf(1, 2, 3, 4, 3)
numbers.remove(3) // removes the first `3`
println(numbers)
numbers.remove(5) // removes nothing
println(numbers)
//sampleEnd
}
Для удаления нескольких элементов одновременно, существуют следующие функции:
removeAll()удаляет все элементы, присутствующие в коллекции-аргументе. В качестве альтернативы, вы можете вызвать её с предикатом в качестве аргумента; в этом случае функция удаляет все элементы, для которых предикат возвращаетtrue.retainAll()- это противоположностьremoveAll(): она удаляет все элементы, кроме тех, которые находятся в коллекции-аргументе. При использовании с предикатом, она оставляет только элементы, соответствующие ему.clear()удаляет все элементы из списка и оставляет его пустым.
fun main() {
//sampleStart
val numbers = mutableListOf(1, 2, 3, 4)
println(numbers)
numbers.retainAll { it >= 3 }
println(numbers)
numbers.clear()
println(numbers)
val numbersSet = mutableSetOf("one", "two", "three", "four")
numbersSet.removeAll(setOf("one", "two"))
println(numbersSet)
//sampleEnd
}
Ещё один способ удалить элементы из коллекции - использовать оператор minusAssign (-=) - локальную версию minus. Второй аргумент может быть отдельной инстанцией типа элемента или другой коллекцией. С отдельным элементом справа, -= удаляет первое вхождение элемента. В свою очередь, если это коллекция, все вхождения её элементов будут удалены. Например, если список содержит дубликаты элементов, они будут удалены сразу. Второй операнд может содержать элементы, которые отсутствуют в коллекции. Такие элементы не влияют на выполнение операции.
fun main() {
//sampleStart
val numbers = mutableListOf("one", "two", "three", "three", "four")
numbers -= "three"
println(numbers)
numbers -= listOf("four", "five")
//numbers -= listOf("four") // does the same as above
println(numbers)
//sampleEnd
}
Обновление элементов
Списки и словари также предоставляют операции для обновления элементов. Они описаны в Операциях, специфичных для списков и Операциях, специфичных для словарей. Для множеств обновление не имеет смысла, так как на самом деле это удаление элемента и добавление другого.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/collection-write.html