Метод intersection
Метод intersection возвращает новое множество,
содержащее только те элементы, которые присутствуют
одновременно и в текущем множестве, и в переданном
множестве. Параметром метод принимает ссылку на другое
множество HashSet, с которым выполняется пересечение.
Исходные множества при этом не изменяются.
Синтаксис
hashset.intersection(&other)
Пример
Давайте найдём пересечение двух множеств чисел:
use std::collections::HashSet;
fn main()
{
let set1: HashSet<i32> = vec![1, 2, 3, 4, 5].into_iter().collect();
let set2: HashSet<i32> = vec![4, 5, 6, 7, 8].into_iter().collect();
let res: HashSet<&i32> = set1.intersection(&set2).collect();
println!("{:?}", res);
}
Результат выполнения кода:
{4, 5}
Пример
Давайте найдём пересечение множеств строк:
use std::collections::HashSet;
fn main()
{
let set1: HashSet<&str> = vec!["a", "b", "c", "d", "e"].into_iter().collect();
let set2: HashSet<&str> = vec!["c", "d", "e", "f", "g"].into_iter().collect();
let res: HashSet<&&str> = set1.intersection(&set2).collect();
println!("{:?}", res);
}
Результат выполнения кода:
{"c", "d", "e"}
Пример
Давайте проверим, что пересечение можно перебрать в цикле и вывести каждый элемент:
use std::collections::HashSet;
fn main()
{
let set1: HashSet<i32> = vec![1, 2, 3, 4, 5].into_iter().collect();
let set2: HashSet<i32> = vec![2, 4, 6].into_iter().collect();
for item in set1.intersection(&set2) {
println!("{}", item);
}
}
Результат выполнения кода:
2
4
Смотрите также
-
класс
HashSet,
который представляет собой множество уникальных элементов -
метод
union,
который объединяет два множества -
метод
difference,
который возвращает разность двух множеств -
метод
insert,
который добавляет элемент во множество