Java 变量名与哈希函数有什么关系?

Java 变量名与哈希函数有什么关系?,java,hash,hashtable,hash-function,Java,Hash,Hashtable,Hash Function,a的属性: 满足(近似)简单一致散列的假设:每个键是相等的 可能散列到m个插槽中的任意一个 哈希函数不应偏向特定的插槽 不将类似的键散列到同一个插槽(例如,编译器的符号表不应散列 变量i和j位于同一个插槽中,因为它们经常结合使用) 快速计算,应具有O(1)运行时 是确定性的。对于给定的k,h(k)应始终返回相同的值 有人能进一步解释第二点吗。变量名与哈希函数有什么关系 编辑:我使用Java。因此,如果一个答案包含使用java语义的解释,我觉得没问题。要点建议编译器使用从变量名到该变量相关信息的映

a的属性:

  • 满足(近似)简单一致散列的假设:每个键是相等的 可能散列到m个插槽中的任意一个
  • 哈希函数不应偏向特定的插槽 不将类似的键散列到同一个插槽(例如,编译器的符号表不应散列 变量i和j位于同一个插槽中,因为它们经常结合使用)
  • 快速计算,应具有O(1)运行时
  • 是确定性的。对于给定的k,h(k)应始终返回相同的值
  • 有人能进一步解释第二点吗。变量名与哈希函数有什么关系


    编辑:我使用Java。因此,如果一个答案包含使用java语义的解释,我觉得没问题。

    要点建议编译器使用从变量名到该变量相关信息的映射,实现为哈希表


    许多编译器也是如此。

    由于哈希表通常用于构建查找表,编译器使用这些查找表查找有关符号的信息,例如变量名和函数名,因此使用编译器场景来解释#2的要点

    作者选取了一对在同一个程序中非常常见的变量名,
    i
    j
    ,并表示表示这些变量名的字符串,
    “i”
    “j”
    ,不应散列到同一个插槽中。这是有意义的,因为解决哈希冲突是查找过程中对速度影响最大的部分