Java与C ++中的哈希
Java和C ++在语法上有些相似,但是随着时间的流逝而发生了变化。Java受到C ++的宽松启发,但最初并未采用C ++的模板结构,也不需要C ++的头文件/内容文件分离,并且当然,它使用JVM并编译为字节码而不是机器码。 从那时起,这两种语言在某种程度上融合了起来-它们遵循相似的编码准则,支持Lamda构造,泛型/模板,循环语法的多个相同形式,等等。但是,现代用途肯定存在差异。C ++模板支持专业化,而Java泛型支持类型限制。它们也具有相似的基本集合类型。 哈希表,哈希图和类似类型的数据结构,这些数据结构允许通过唯一键进行索引,但是该索引是以非常特定的方式实现的。现在,任何关联的容器类型都可以让你通过特定键访问数据。例如,你可以使用链表作为存储结构,也可以使用双链表或二叉树。哈希表本质上使用数组,但是该数组由哈希值索引。 Java 具有作为类的基本关联容器类型 java.util.HashMap 。 C ++ 有 std::unordered_map 。 基于哈希的容器在数据存储方面具有明显的优势。当使用具有低冲突可能性的哈希生成器时,两个容器( HashMap 和 unordered_map )都具有 O ( 1 )查找性能。碰撞的可能性越大,容器的性能就越接近 O ( n ),其中 n 是存储在容器中的元素数。这两个容器也都使用标准的哈希函数 -Java 需要键来实现