Класс HashMap
Класс HashMap - это коллекция из стандартной библиотеки Rust, реализующая хеш-таблицу. Он хранит данные в виде пар «ключ-значение» и позволяет быстро находить, вставлять и удалять значения по ключу. Для использования HashMap необходимо подключить модуль std::collections::HashMap. Ключи должны реализовывать трейты Eq и Hash, а значения могут быть любого типа. При создании экземпляра можно указать начальную ёмкость с помощью метода with_capacity или создать пустую таблицу методом new.
Синтаксис
use std::collections::HashMap;
let mut map: HashMap<K, V> = HashMap::new();
let mut map: HashMap<K, V> = HashMap::with_capacity(capacity);
Пример
Давайте создадим пустую хеш-таблицу, вставим в неё несколько пар «ключ-значение» и выведем содержимое на экран:
use std::collections::HashMap;
fn main()
{
let mut map: HashMap<&str, i32> = HashMap::new();
map.insert("one", 1);
map.insert("two", 2);
map.insert("three", 3);
println!("{:?}", map);
}
Результат выполнения кода:
{"one": 1, "two": 2, "three": 3}
Пример
Давайте получим значение по ключу с помощью метода get:
use std::collections::HashMap;
fn main()
{
let mut map: HashMap<&str, i32> = HashMap::new();
map.insert("one", 1);
map.insert("two", 2);
let res = map.get("one");
println!("{:?}", res);
}
Результат выполнения кода:
Some(1)
Пример
Давайте проверим наличие ключа в таблице с помощью метода contains_key и удалим пару методом remove:
use std::collections::HashMap;
fn main()
{
let mut map: HashMap<&str, i32> = HashMap::new();
map.insert("one", 1);
map.insert("two", 2);
println!("{}", map.contains_key("one"));
map.remove("one");
println!("{}", map.contains_key("one"));
println!("{:?}", map);
}
Результат выполнения кода:
true
false
{"two": 2}
Пример
Давайте переберём все пары «ключ-значение» с помощью метода iter:
use std::collections::HashMap;
fn main()
{
let mut map: HashMap<&str, i32> = HashMap::new();
map.insert("one", 1);
map.insert("two", 2);
map.insert("three", 3);
for (key, value) in map.iter()
{
println!("{}: {}", key, value);
}
}
Результат выполнения кода:
one: 1
two: 2
three: 3