Операции записи в коллекции
Изменяемые коллекции поддерживают операции изменения содержимого коллекции, например добавление или удаление элементов. На этой странице описаны операции записи, доступные для всех реализаций 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–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/collection-write.html