Функция retainAll

Функция retainAll оставляет в изменяемой коллекции только те элементы, которые присутствуют в указанной коллекции. Все остальные элементы удаляются. Функция возвращает true, если коллекция была изменена в результате операции. Работает с изменяемыми коллекциями: MutableList, MutableSet, MutableCollection и другими.

Синтаксис

kotlinfun retainAll(elements: Collection<E>): Boolean

Пример

Оставим в списке только элементы, которые есть в другом списке:

kotlinval numbers = mutableListOf(1, 2, 3, 4, 5)
val retainElements = listOf(2, 4, 6)
val res = numbers.retainAll(retainElements)
println(numbers)
println(res)

Результат выполнения кода:

kotlin[2, 4]
true

Пример

Использование retainAll с множеством:

kotlinval chars = mutableSetOf('a', 'b', 'c', 'd', 'e')
val retainChars = setOf('c', 'e', 'f')
val res = chars.retainAll(retainChars)
println(chars)
println(res)

Результат выполнения кода:

kotlin[c, e]
true

Пример

Когда коллекция не изменяется, функция возвращает false:

kotlinval numbers = mutableListOf(1, 2, 3)
val retainElements = listOf(1, 2, 3, 4)
val res = numbers.retainAll(retainElements)
println(numbers)
println(res)

Результат выполнения кода:

kotlin[1, 2, 3]
false

Пример

Когда все элементы нужно удалить:

kotlinval numbers = mutableListOf(1, 2, 3)
val retainElements = emptyList<Int>()
val res = numbers.retainAll(retainElements)
println(numbers)
println(res)

Результат выполнения кода:

kotlin[]
true

Для каких типов коллекций работает

Функция retainAll работает со следующими типами изменяемых коллекций:

Не работает с неизменяемыми коллекциями (List, Set), массивами (Array) и отображениями (Map).

Смотрите также

  • функцию removeAll,
    которая удаляет все указанные элементы из коллекции
  • функцию containsAll,
    которая проверяет, содержит ли коллекция все указанные элементы
  • функцию intersect,
    которая возвращает пересечение двух коллекций
  • функцию filter,
    которая фильтрует элементы по условию