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

Метод entry

Метод entry возвращает значение типа Entry, которое представляет запись в HashMap для указанного ключа. Параметром метод принимает ключ, запись которого нужно получить. Если ключа ещё нет в словаре, запись создаётся «на месте» и позволяет добавить значение через методы or_insert, or_insert_with или or_default. Метод удобен, когда нужно за один поиск решить, вставлять значение или изменять уже существующее.

Синтаксис

hashmap.entry(key)

Пример

Давайте вставим значение для ключа "a", если его ещё нет в словаре:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.entry("a").or_insert(1); map.entry("b").or_insert(2); println!("{:?}", map); }

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

{"a": 1, "b": 2}

Пример

Давайте увеличим значение для ключа "a" на 10, а для отсутствующего ключа "c" установим значение 0:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert("a", 5); *map.entry("a").or_insert(0) += 10; *map.entry("c").or_insert(0) += 10; println!("{:?}", map); }

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

{"a": 15, "c": 10}

Пример

Давайте воспользуемся методом and_modify у записи, чтобы изменить существующее значение и добавить новое при отсутствии ключа:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert("a", 1); map.entry("a") .and_modify(|v| *v += 100) .or_insert(0); map.entry("b") .and_modify(|v| *v += 100) .or_insert(0); println!("{:?}", map); }

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

{"a": 101, "b": 0}

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

  • класс Entry,
    который представляет запись словаря
  • метод or_insert,
    который вставляет значение, если ключа ещё нет
  • метод or_insert_with,
    который вставляет значение, вычисленное функцией
  • метод and_modify,
    который изменяет значение существующей записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить