小编哈希凑集 HashSet,简称为 凑集 (set ),是没有重复值的相同数据类型的值的凑集。
哈希凑集 HashSet 与 哈希表Hashmamp 最大不同便是哈希凑集没有重复值。
Rust 措辞标准库 std::collections 中定义了却构体 HashSet 用于描述凑集。
std::collections 模块中同时包含了大量的方法用于创建、访问和操作凑集。

use std::collections::HashSet;fn main() { // 创建凑集的语法 // Rust 措辞标准库 std::collections 的构造体 HashSet 供应了 new() 静态方法用于创建凑集的一个实例。

phphash表Rust 哈希聚集HashSet Ruby

let mut h_set_name = HashSet::new(); // new() 方法会创建一个空的凑集。
// 但这个空的凑集是不能立即利用的,由于它还没指天命据类型。
// 当我们给凑集添加了元素之后才能正常利用。
h_set_name.insert("Rust"); h_set_name.insert("Php"); h_set_name.insert("Python"); h_set_name.insert("Php"); // 插入失落败但不会引发非常 println!("{:?}", h_set_name); // 输出:{"Rust", "Php", "Python"} // 获取凑集的长度 len() // len() 方法用于获取凑集的长度,也便是凑集中元素的个数。
// len() 方法的函数原型:pub fn len(&self) -> usize println!("size of the set is {}", h_set_name.len()); // 输出:size of the set is 3 // 返回凑集所有元素创建的迭代器 iter() // iter() 方法用于返回凑集中所有元素组成的无序迭代器。
// iter() 方法的函数原型:pub fn iter(&self) -> Iter // 迭代器元素的顺序是无序的,毫无规则的。
// 而且每次调用 iter() 返回的元素顺序都可能不一样。
for lang in h_set_name.iter() { println!("{}", lang); } // 输出 // Rust // Python // Php // 获取凑集中指定值的一个引用 get() // get() 方法用于获取凑集中指定值的一个引用。
// get() 方法的原型:pub fn get<Q:?Sized>(&self, value: &Q) -> Option<&T> // 如果值 value 存在于凑集中则返回凑集中的相应值的一个引用,否则返回 None。
match h_set_name.get(&"Rust") { Some(value) => { println!("found {}", value); } None => { println!("not found"); } } println!("{:?}", h_set_name); // 输出 // found Rust // {"Rust", "Php", "Python"} // 判断凑集是否包含某个值 contains() // contains() 方法用于判断凑集是否包含指定的值。
// contains() 方法的函数原型:pub fn contains<Q: ?Sized>(&self, value: &Q) -> bool if h_set_name.contains(&"Rust"){ println!("found Rust"); } // 输出:found Rust // 删除凑集元素 remove() // remove() 方法用于从凑集中删除指定的值。
// remove() 方法的原型:pub fn remove(&mut self, value: &Q) -> bool println!("length of the Hashset {}",h_set_name.len()); h_set_name.remove(&"Php"); println!("length of the Hashset after remove {}",h_set_name.len()); // 输出 // length of the Hashset 3 // length of the Hashset after remove 2 }