Rust 笔记:HashSet和 HashMap 使用说明

222 阅读2分钟

前言

std::collections 是 Rust 标准库中一个重要的模块,包含多种集合类型的数据结构,如 HashSetHashMap。下面是它们的基本使用说明:

HashSet

HashSet 是一个不包含重复元素的集合。它的底层实现是基于哈希表的,因此具有快速的插入、删除和查找操作。

使用示例

use std::collections::HashSet;

fn main() {
    // 创建一个新的 HashSet
    let mut set = HashSet::new();

    // 插入元素
    set.insert("apple");
    set.insert("banana");
    set.insert("orange");

    // 检查元素是否存在
    if set.contains("apple") {
        println!("Set contains apple");
    }

    // 删除元素
    set.remove("banana");

    // 迭代集合中的元素
    for fruit in &set {
        println!("{}", fruit);
    }

    // 获取集合的长度
    println!("Set length: {}", set.len());
}

HashMap

HashMap 是一个键值对集合,允许快速查找、插入和删除操作。键是唯一的,而值可以是任何类型。

使用示例

use std::collections::HashMap;

fn main() {
    // 创建一个新的 HashMap
    let mut map = HashMap::new();

    // 插入键值对
    map.insert("apple", 3);
    map.insert("banana", 2);
    map.insert("orange", 5);

    // 访问元素
    if let Some(&count) = map.get("apple") {
        println!("There are {} apples", count);
    }

    // 更新元素
    map.insert("apple", 4); // 覆盖旧值

    // 删除元素
    map.remove("banana");

    // 迭代键值对
    for (fruit, count) in &map {
        println!("{}: {}", fruit, count);
    }

    // 获取集合的长度
    println!("Map length: {}", map.len());
}

常用方法

  • HashSet

    • insert(value): 插入一个元素。
    • contains(&value): 检查集合中是否包含某个元素。
    • remove(&value): 从集合中删除某个元素。
    • len(): 返回集合中的元素数量。
    • is_empty(): 检查集合是否为空。
  • HashMap

    • insert(key, value): 插入一个键值对。
    • get(&key): 获取与键关联的值。
    • remove(&key): 删除某个键及其关联的值。
    • len(): 返回键值对的数量。
    • is_empty(): 检查是否为空。

注意事项

  • 哈希函数: 默认情况下,HashSetHashMap 使用的是 Rust 标准库提供的哈希函数。你可以通过提供自定义的哈希器来改变这一行为。
  • 性能: 由于哈希表的底层实现特性,HashSetHashMap 在平均情况下具有常数时间复杂度的插入、删除和查找操作。

这些集合类型在 Rust 中非常常用,适合用于需要快速访问和管理元素的场景。