什么是不知道密钥的哈希表?

时间:2016-05-22 00:01:37

标签: dictionary hashtable

例如,如果我在python中创建一个字典,我可以使用d.keys()来检索密钥。

什么是哈希表/词典没有这种访问?存储可能是一个问题,密钥可能是最不重要的。

编辑(澄清):我想要一个可以通过密钥访问值但不知道密钥的数据结构,只知道哈希。例如:

Hash                                                             Value
-----------------------------------------------------------------------
2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae|hey!
c9fc5d06292274fd98bcb57882657bf71de1eda4df902c519d915fc585b10190|hello!

如果我尝试使用密钥“这是一个密钥”来访问数据结构,它将散列它并获得“你好!”。如果我尝试使用键“foo”访问它,我会得到“嘿!”。

我们无法从此哈希表中检索密钥,但我们可以访问数据。这在存储很重要的情况下非常有用。

通常,这将是表格:

Hash                                                             Value  Key
-------------------------------------------------------------------------------------
2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae|hey!  |foo
c9fc5d06292274fd98bcb57882657bf71de1eda4df902c519d915fc585b10190|hello!|this is a key

1 个答案:

答案 0 :(得分:1)

这称为Set - 在这种情况下,值是键,并且实现通常在将项添加到集之前对项使用哈希码和相等操作。

SortedSet的某些实现可以进行排序,通常称为Set<T>。可以认为Dictionary<T,T>SortedSet<T>相当(而SortedDictionary<T,T>是C#用语中apt-cache show PACKAGE的近似值。

排序变体通常使用二叉树实现,而未排序的实现使用散列表。由于关键是值,大多数实现仅存储值本身。

您使用的是哪种平台/语言?爪哇?