Функция retainAll
Функция retainAll оставляет в изменяемой коллекции только те элементы,
которые присутствуют в указанной коллекции. Все остальные элементы удаляются.
Функция возвращает true, если коллекция была изменена в результате операции.
Работает с изменяемыми коллекциями: MutableList, MutableSet,
MutableCollection и другими.
Синтаксис
fun retainAll(elements: Collection<E>): Boolean
Пример
Оставим в списке только элементы, которые есть в другом списке:
val numbers = mutableListOf(1, 2, 3, 4, 5)
val retainElements = listOf(2, 4, 6)
val res = numbers.retainAll(retainElements)
println(numbers)
println(res)
Результат выполнения кода:
[2, 4]
true
Пример
Использование retainAll с множеством:
val chars = mutableSetOf('a', 'b', 'c', 'd', 'e')
val retainChars = setOf('c', 'e', 'f')
val res = chars.retainAll(retainChars)
println(chars)
println(res)
Результат выполнения кода:
[c, e]
true
Пример
Когда коллекция не изменяется, функция возвращает false:
val numbers = mutableListOf(1, 2, 3)
val retainElements = listOf(1, 2, 3, 4)
val res = numbers.retainAll(retainElements)
println(numbers)
println(res)
Результат выполнения кода:
[1, 2, 3]
false
Пример
Когда все элементы нужно удалить:
val numbers = mutableListOf(1, 2, 3)
val retainElements = emptyList<Int>()
val res = numbers.retainAll(retainElements)
println(numbers)
println(res)
Результат выполнения кода:
[]
true
Для каких типов коллекций работает
Функция retainAll работает со следующими типами изменяемых коллекций:
MutableListMutableSetMutableCollectionLinkedListArrayListHashSetLinkedHashSet
Не работает с неизменяемыми коллекциями (List, Set),
массивами (Array) и отображениями (Map).
Смотрите также
-
функцию
removeAll,
которая удаляет все указанные элементы из коллекции -
функцию
containsAll,
которая проверяет, содержит ли коллекция все указанные элементы -
функцию
intersect,
которая возвращает пересечение двух коллекций -
функцию
filter,
которая фильтрует элементы по условию