35_hashcode解释

来源:互联网 发布:ocr身份证识别 源码 编辑:程序博客网 时间:2024/05/22 17:24

35_hashcode解释


马士兵说: 

站在java虚拟机的角度,来看内存里的布局,    椭圆代表一个一个java对象,一个程序运行起来的时候,可能很多对象在内存里头分配,那么对于java虚拟机来说,他要运行的时候,它需要找到这些对象的地址,  这些对象的地址怎么找,怎么找到这些对象来回来去之间的互相有联系,怎么找它们,怎么排列组合它们,难道说你在你内存里挨着排从头搜到尾,可能吗?    每运行一句话,都要搜一遍,累死了,对吧?    所以这个时候,往往采取的措施就是说,它会用一张表,来记录着每一个对象在什么位置上。

而这张表一般用hash编码来记录,这个hansh编码呢,每一个对象都有自己独一无二hash编码,根据这个编码找到相关的对象,也就是说根据这个编码 独一无二的来确定的对象,并且可以非常快的确定这个对象,它所在的位置。 




拓展知识

简单这样理解,但是呢,java其实本身对于hash编码的实现,有点问题,它有可能两个对象内容不同, hash编码 居然可能一样的,它这个概率很高,网上专门有对这个评论的,关于hash编码,它有可能是一样的,  先这个样记着, 后面降到 集合,降到MAp在来回头看这个