java - 在哈希表中创建字符串的哈希值的时间复杂度

标签 java c++ string hashtable

通常说在哈希表中插入和查找一个字符串是 O(1)。但是一个字符串的hash key是怎么生成的呢?为什么不考虑 O(L),字符串长度?
我很清楚为什么整数是 O(1) 而不是字符串。

我明白为什么一般来说,插入哈希表是 O(1),但我对将哈希插入表之前的步骤感到困惑:生成哈希值。

此外,在 java 中生成字符串哈希键的方式与在 C++ 中生成 unordered_map 之间有什么区别吗?
谢谢。

最佳答案

在哈希表中插入等是 O(1),因为它相对于表中的元素数量是恒定的(或更准确地说,是有界的)。

本文中的“O(1)”并未说明您可以多快地计算哈希值。如果为此付出的努力以某种方式增长,那就是它的方式。但是,我发现体面的(即“适合此应用程序”)散列函数的复杂性不太可能比被散列对象的“大小”(即我们的字符串示例中的长度)的线性更差。

关于java - 在哈希表中创建字符串的哈希值的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31549669/

相关文章:

java - MongoOperations 添加/删除 json 到 MongoDB

c++ - 如何检测以错误大小传递的空 C 数组?

C++ typedef 静态函数指针 : undefined symbol

php - str_replace() 没有按预期工作

java - 我们可以为多个包中的一组 xsd 生成 JAXB 类吗?

java - TestNG:在 Eclipse 中的 DataProvider 中返回 Iterator 时出现 ClassCastException

c++ - 在现代 C++ 中使用模板替换函数指针数组

Java 字符串 UTF-8 限制

c - 将具有固定长度字符串的数组传递给 C 中的函数

java - 无法在 Java 中将 ArrayList 的 ArrayList 实例化为列表的列表