"HashTable" (数据结构)

"HashTable"

表示一个哈希表,其中的键和值为普通表达式.

更多信息

  • 哈希表可用于存储通过键来获取的值:
  • CreateDataStructure["HashTable"]创建新的空 "HashTable"
    CreateDataStructure["HashTable",assoc]创建一个包含来自 assoc 的规则的新 "HashTable"
    Typed[x,"HashTable"]指定 x 的类型为 "HashTable"
  • 对于类型为 "HashTable" 的数据结构,可进行以下操作:
  • ds["Copy"]返回 ds 的副本时间: O(n)
    ds["Elements"]返回 ds 的参数列表时间: O(n)
    ds["EmptyQ"]如果 ds 中没有参数则返回 True时间: O(1)
    ds["Insert",keyvalue]key 及关联的 value 添加到 ds 中,如果添加成功则返回 True时间: O(1)
    ds["KeyDrop",key]删除 ds 中的 key 及其值时间: O(1)
    ds["KeyDropAll"]删除 ds 中所有的键及其值时间: O(n)
    ds["KeyExistsQ",key]如果 ds 中有 key 则返回 True时间: O(1)
    ds["Keys"]ds 的建返回为列表时间: O(n)
    ds["Length"]ds 中存储的 key-value 对的数量时间: O(1)
    ds["Lookup",key]返回 ds 中存储的 key 的值;如果没有找到该键则返回 Missing 对象时间: O(1)
    ds["Lookup",key,defFun]返回 ds 中存储的 key 的值;如果没有找到该键则返回 defFun[key]时间: O(1)
    ds["Values"]ds 的值返回为列表时间: O(n)
    ds["Visualization"]返回 ds 的可视化时间: O(n)
  • 还支持以下函数:
  • dsi===dsj如果 dsi 等于 dsj 则为 True
    FullForm[ds]ds 的完全形式
    Information[ds]关于 ds 的信息
    InputForm[ds]ds 的输入形式
    Normal[ds]ds 转换成普通表达式

范例

打开所有单元关闭所有单元

基本范例  (2)

可用 CreateDataStructure 创建新的 "HashTable"

插入键与值:

只存储了一个键:

测试是否有键:

查找值:

如果没有找到键,返回 Missing 对象:

返回表达式形式的 ds

可视化数据结构:

范围  (1)

信息  (1)

可用 CreateDataStructure 创建新的 "HashTable"

数据结构 ds 的信息:

应用  (1)

记忆化  (1)

哈希表对于保存将被计算的值很有用,该过程称为记忆化. 此处给出了应用于斐波纳契计算的例子:

计算 100 的值:

计算 1000 的值: