我们为什么以及在哪里使用哈希?

为什么我们使用哈希进行搜索? 在二叉搜索树上使用散列有什么好处?

散列通常是恒定时间操作,而二叉树具有对数时间复杂度。

由于散列的计算不是基于集合中的项目数,而是基于要搜索的项目,因此集合的大小与查找项目所花费的时间无关。 然而,大多数散列算法会产生冲突,从而增加了时间复杂度,因此不太可能获得完美的恒定时间查找。

使用二叉树,您必须在找到项目之前进行log2N比较。

维基百科解释得很好:

http://en.wikipedia.org/wiki/Hash_table#Features

总结:插入通常很慢,读取速度比树快。

至于Java:任何时候你都有一些键/值对,你经常阅读并且不经常写,而且一切都很容易适合RAM,使用HashTable进行快速读取访问和令人难以置信的代码维护。

如果您具有较低的插入和均匀的插槽分布,则散列表最适合搜索(=)。 时间复杂度为O(n + k) – 线性。

如果你想进行比较操作,它们不是一个好主意(<,>)