zoukankan      html  css  js  c++  java
  • Java基础知识强化48:Java中哈希码

    1.概念:

         哈希其实只是一个概念,没有什么真实的指向。它的目的是保证数据均匀的分布到一定的范围内。所以不同数据产生相同的哈希码是完全可以的。

         现在是站在JAVA虚拟机的角度来看内存里面的布局,站在JAVA虚拟机的角度,在内存里面有好多好多个对象,这里用椭圆来代表一个个对象。一个程序运行起来的时候,可能会有很多个对象在内存里面分配,那么对于JAVA虚拟机来说,它运行的时候需要找到这些对象的地址,这些对象的地址怎么找呢?JAVA虚拟机会用一张表记录每一个对象在什么位置上,而这张表一般是用哈希编码来记录,每一个对象都有自己独一无二的哈希编码,根据这个编码就可以找到相关的对象,也就是说,根据这个编码你可以独一无二地确定这个对象,并且可以非常快地确定这个对象所在的位置,可以简单这么理解哈希编码的作用。但是JAVA本身对哈希编码的实现有点问题,它有可能是两个对象,内容不同,但是它们的哈希编码居然有可能是一样的,而且这个概率非常高。

    2.  哈希编码的实现有点问题,它有可能是两个对象,内容不同,但是它们的哈希编码居然有可能是一样的,而且这个概率非常高?

    答:当然有可能,其实只要想一下明白了。hashcode是32位整数,只要内存中有超过2^32个对象,那就必然至少有两个对象的hashcode是相同的。

  • 相关阅读:
    C#开发中is和as的区别
    Winform开发框架之系统登录实现
    C#几个经常犯错误汇总
    JavaScript事件冒泡简介及应用
    在C#的winForm程序中调用和执行javascript
    C#关于托管程序和非托管程序的区别
    分布式计算 网格计算 并行计算 云计算
    (转)960的秘密
    集群概念:集群技术简介(转)
    好用的Sql格式化工具
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4822306.html
Copyright © 2011-2022 走看看