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 许可证定义,应按上述方式许可,不附加任何额外条款或条件。
贡献
除非您明确表示,否则任何贡献均应按上述方式许可,不附加任何额外条款或条件。