Метод with_capacity
Метод with_capacity создает новую пустую
хеш-таблицу HashMap, но в отличие от
метода new он сразу выделяет память
под указанное количество пар ключ-значение.
Параметром метод принимает целое число -
начальную емкость хеш-таблицы.
Предварительное выделение памяти полезно, когда заранее известно примерное количество элементов, которые будут добавлены в хеш-таблицу. Это позволяет избежать многократного перехеширования и перевыделения памяти при росте коллекции, что положительно сказывается на производительности.
Синтаксис
HashMap::with_capacity(capacity)
Пример
Давайте создадим хеш-таблицу с начальной емкостью 10 элементов и проверим ее размер:
use std::collections::HashMap;
fn main()
{
let map: HashMap<&str, i32> = HashMap::with_capacity(10);
println!("{}", map.len());
}
Результат выполнения кода:
0
Пример
Давайте создадим хеш-таблицу с начальной емкостью 20 элементов и добавим в нее несколько пар ключ-значение:
use std::collections::HashMap;
fn main()
{
let mut map: HashMap<&str, i32> = HashMap::with_capacity(20);
map.insert("a", 1);
map.insert("b", 2);
map.insert("c", 3);
println!("{}", map.len());
}
Результат выполнения кода:
3
Пример
Давайте сравним емкость хеш-таблицы,
созданной через new и через
with_capacity:
use std::collections::HashMap;
fn main()
{
let map1: HashMap<&str, i32> = HashMap::new();
let map2: HashMap<&str, i32> = HashMap::with_capacity(50);
println!("new: {}", map1.capacity());
println!("with_capacity: {}", map2.capacity());
}
Результат выполнения кода:
new: 0
with_capacity: 50