РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
702 of 1245 menu

Метод retain

Метод retain позволяет выборочно удалять элементы из хеш-таблицы. Он принимает замыкание (функцию-предикат), которое получает ссылки на ключ и значение. Если замыкание возвращает true, элемент остаётся в коллекции, если false - удаляется. Метод изменяет исходный словарь и не возвращает значения.

Синтаксис

hashmap.retain(|key, value| condition)

Пример

Давайте создадим HashMap с числовыми ключами и значениями и оставим только те элементы, значение которых больше 3:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert(1, 10); map.insert(2, 20); map.insert(3, 30); map.insert(4, 40); map.insert(5, 50); map.retain(|_key, value| *value > 30); println!("{:?}", map); }

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

{4: 40, 5: 50}

Пример

Давайте отфильтруем HashMap по ключу, оставив только чётные ключи:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert(1, "a"); map.insert(2, "b"); map.insert(3, "c"); map.insert(4, "d"); map.insert(5, "e"); map.retain(|key, _value| key % 2 == 0); println!("{:?}", map); }

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

{2: "b", 4: "d"}

Пример

Давайте проверим, что будет, если ни один элемент не удовлетворит условию:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert(1, "abcde"); map.insert(2, "12345"); map.retain(|_key, value| value.len() > 10); println!("{:?}", map); }

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

{}

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

  • метод remove,
    который удаляет пару по ключу и возвращает значение
  • метод clear,
    который полностью очищает хеш-таблицу
  • метод iter,
    который возвращает итератор по парам ключ-значение
  • метод entry,
    который предоставляет доступ к элементу по ключу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить