"OrderedHashSet" (数据结构)

"OrderedHashSet"

表示一个集合,其中的成员为普通表达式,成员资格则是用哈希函数计算的,并保留成员插入的顺序.

更多信息

  • 有序哈希集可在保留插入顺序很重要的情况下高效插入和删除以及进行成员测试:
  • CreateDataStructure["OrderedHashSet"]创建新的空 "OrderedHashSet"
    CreateDataStructure["OrderedHashSet",elems]创建一个包含 elems 的新 "OrderedHashSet"
    Typed[x,"OrderedHashSet"]指定 x 的类型为 "OrderedHashSet"
  • 对于类型为 "OrderedHashSet" 的数据结构,可进行以下操作:
  • ds["Complement",list]ds 中删除出现在 list 中的元素用时:O(n)
    ds["Copy"]返回 ds 的副本用时:O(n)
    ds["Elements"]返回 ds 的元素列表用时:O(n)
    ds["EmptyQ"]如果 ds 中没有元素则返回 True用时:O(1)
    ds["Delete",x]ds 中删除 x,如果 x 是元素,返回 True用时:O(1)
    ds["DeleteAll"]删除 ds 的所有元素用时:O(n)
    ds["Insert",x]x 添加到集合中,如果添加成功则返回 True用时:O(1)
    ds["Intersection",list]ds 中删除没有出现在 list 中的元素用时:O(n)
    ds["Length"]返回存储在 ds 中的元素的数量用时:O(1)
    ds["MemberQ",x]如果 xds 的元素则返回 True用时:O(1)
    ds["Pop"]ds 中移除一个元素并将其返回用时:O(1)
    ds["Union",list]list 中出现的元素添加到 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 创建新的 "OrderedHashSet"

插入集合中:

集合中有一个元素:

测试是否存储的是表达式:

如果存储的不是表达式,则返回 False

从集合中删除元素. 如果确实删除了某些元素,则返回 True

返回表达式形式的 ds

快速插入元素:

可视化数据结构:

保留插入元素的顺序:

范围  (2)

信息  (1)

可用 CreateDataStructure 创建新的 "OrderedHashSet"

关于数据结构 ds 的信息:

集合运算  (1)

"OrderedHashSet" 支持一些核心集合运算. 可用 CreateDataStructure 创建新的空 "OrderedHashSet"

将元素插入到 ds 中:

"Union" 运算将原先不在数据结构中的元素添加到数据结构中:

"Complement" 运算将元素从数据结构中删除:

"Intersection" 运算将共有元素保留在数据结构中: