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

Класс HashSet

Класс HashSet из модуля std::collections представляет собой коллекцию уникальных значений. В отличие от вектора, HashSet не хранит элементы в определённом порядке и автоматически удаляет дубликаты. Для использования класса необходимо подключить его через use std::collections::HashSet;.

Создать множество можно с помощью метода new, который создаёт пустой HashSet.

Синтаксис

use std::collections::HashSet; let mut set: HashSet<T> = HashSet::new();

Пример

Давайте создадим множество и добавим в него несколько чисел с помощью метода insert:

use std::collections::HashSet; fn main() { let mut set: HashSet<i32> = HashSet::new(); set.insert(1); set.insert(2); set.insert(3); println!("{:?}", set); }

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

{1, 2, 3}

Пример

Давайте попробуем добавить в множество дубликат и проверим длину с помощью метода len:

use std::collections::HashSet; fn main() { let mut set: HashSet<i32> = HashSet::new(); set.insert(1); set.insert(2); set.insert(2); set.insert(3); set.insert(3); println!("{}", set.len()); }

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

3

Пример

Давайте проверим наличие элемента в множестве с помощью метода contains:

use std::collections::HashSet; fn main() { let mut set: HashSet<i32> = HashSet::new(); set.insert(1); set.insert(2); set.insert(3); let res = set.contains(&2); println!("{}", res); }

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

true

Пример

Давайте создадим множество из вектора с помощью метода collect и удалим элемент методом remove:

use std::collections::HashSet; fn main() { let vec = vec![1, 2, 2, 3, 3, 4]; let mut set: HashSet<i32> = vec.into_iter().collect(); set.remove(&2); println!("{:?}", set); }

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

{1, 3, 4}

Пример

Давайте переберём все элементы множества с помощью цикла for:

use std::collections::HashSet; fn main() { let mut set: HashSet<i32> = HashSet::new(); set.insert(1); set.insert(2); set.insert(3); for item in &set { println!("{}", item); } }

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

1 2 3

Пример

Давайте найдём пересечение двух множеств с помощью метода intersection:

use std::collections::HashSet; fn main() { let mut set1: HashSet<i32> = HashSet::new(); set1.insert(1); set1.insert(2); set1.insert(3); let mut set2: HashSet<i32> = HashSet::new(); set2.insert(2); set2.insert(3); set2.insert(4); let res: HashSet<_> = set1.intersection(&set2).collect(); println!("{:?}", res); }

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

{2, 3}

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

  • метод new,
    который создаёт пустой HashSet
  • метод insert,
    который добавляет элемент в множество
  • метод contains,
    который проверяет наличие элемента в множестве
  • метод remove,
    который удаляет элемент из множества
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить