12 个重大版本
| 0.14.0 | 2022 年 4 月 27 日 |
|---|---|
| 0.11.0 | 2022 年 4 月 22 日 |
| 0.1.1 | 2022 年 3 月 29 日 |
#1950 在 数据结构
每月 37 次下载
170KB
1.5K SLoC
双键哈希表
类似于 HashMap,但允许您使用两个不同的键指向相同的数据。
在开发过程中,有时可能需要具有类似于 HashMap 的数据结构,但具有两个不同的键引用相同的数据。
例如,如果您有一些具有唯一 ID 和名称的数据,那么您创建一个包含名称的结构,并使用唯一 ID 作为键将其存储在 普通 HashMap 中。但是,通过名称查找元素将执行 O(n) 时间的操作。反向情况也是如此。
此软件包试图通过提供 DHashMap 结构来解决这一矛盾 - 一个您可以添加、查找和删除元素的结构,这些元素可以使用类型为 K1 的第一个键或类型为 K2 的第二个键。
内部,它使用两个映射:第一个是类型为 HashMap<K1, (K2, V)> 的映射,第二个是类型为 HashMap<K2, K1> 的映射。使用两个 HashMap 而不是一个会带来性能和内存开销。
建议使用类型为 K1 的第一个键以快速访问数据,因为使用类型为 K2 的第二个键进行索引需要两个 HashMap 查找。
变更日志
当前状态
双键哈希表处于积极开发中。设计目标是实现整个 HashMap 接口。有关更多信息,请参阅 变更日志。
方法
-
new:自v0.1.0以来完成 -
with_capacity:自v0.1.0以来完成 -
with_hasher:自v0.1.0完成以来 -
with_capacity_and_hasher:自v0.1.0完成以来 -
capacity:自v0.1.0完成以来 -
keys:自v0.6.0完成以来 -
into_keys:自v0.12.0完成以来 -
values:自v0.6.0完成以来 -
values_mut:自v0.6.0完成以来 -
into_values:自v0.12.0完成以来 -
iter:自v0.4.0完成以来 -
iter_mut:自v0.5.0完成以来 -
len:自v0.1.0完成以来 -
is_empty:自v0.1.0完成以来 -
drain:自v0.10.0完成以来 -
drain_filter:开发中 -
retain:开发中 -
clear:自v0.1.0完成以来 -
hasher:自v0.1.0完成以来 -
reserve:自v0.1.0完成以来 -
try_reserve:自v0.1.0完成以来 -
shrink_to_fit:自v0.1.0完成以来 -
shrink_to:自v0.1.0完成以来 -
entry:自v0.1.0完成以来 -
get:自v0.1.0和v0.8.0(get_key1、get_key2、get_keys方法)以来 -
get_key_value:自v0.8.0(get_key1_value、get_key2_value、get_keys_value方法)以来 -
contains_key: 已完成自v0.7.0(contains_key1、contains_key2和contains_keys方法) -
get_mut: 已完成自v0.1.0(get_mut_key1和get_mut_key2方法) -
insert: 已完成自v0.1.0(insert_unchecked和insert方法) -
try_insert: 已完成自v0.1.0 -
remove: 已完成自v0.1.0(remove_key1和remove_key2方法) -
remove_entry: 开发中 -
raw_entry_mut: 开发中 -
raw_entry: 开发中
特质实现
-
Clone: 已完成自v0.1.0 -
Debug: 已完成自v0.9.0 -
Default: 已完成自v0.3.0 -
Extend: 已完成自v0.2.0(版本v0.12.0的一些更新) -
From: 已完成自v0.14.0 -
FromIterator: 已完成自v0.2.0 -
Index: 已完成自v0.14.0 -
IntoIterator: 已完成自v0.11.0 -
PartialEq: 已完成自v0.9.0 -
Eq: 已完成自v0.11.0
许可证
在您明确表示不同的情况下,除非您明确表示,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证定义,应按上述方式许可,不附加任何额外条款或条件。
贡献
除非您明确表示,否则任何贡献均应按上述方式许可,不附加任何额外条款或条件。