黑马程序员技术交流社区

标题: 请问一下hashMap()这个底层hash码结构是什么样子 [打印本页]

作者: _code    时间: 2014-10-1 14:34
标题: 请问一下hashMap()这个底层hash码结构是什么样子
可以画个图 表示一下hash码结构描述一下么
作者: 苏乞儿    时间: 2014-10-1 15:17
这个可以借鉴一直下张老师的高新部分,那里有关于hash的介绍,为了检索方便,分类存放的。。。
作者: daoqin    时间: 2014-10-1 15:35
HashMap的数据结构:
    HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。首先,HashMap类的属性中定义了Entry类型的数组。Entry类实现java.ultil.Map.Entry接口,同时每一对key和value是作为Entry类的属性被包装在Entry的类中。
如图所示,HashMap的数据结构:



   HashMap的部分源码如下:
  1. /**  
  2. * The table, resized as necessary. Length MUST Always be a power of two.  
  3. */   
  4.    
  5. transient Entry[] table;   
  6.      
  7. static class Entry<K,V> implements Map.Entry<K,V> {   
  8.     final K key;   
  9.     V value;   
  10.     Entry<K,V> next;   
  11.     final int hash;   
  12.     ……   
  13. }
复制代码
可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表,当新建一个HashMap,就会初始化一个数组,table数组元素的类型就是Entry类型的,每个Entry就是一个键值对,并且持有一个指向下一个Entry元素的引用。
作者: _code    时间: 2014-10-2 12:06
daoqin 发表于 2014-10-1 15:35
HashMap的数据结构:
    HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。首先,HashM ...

敏敏好学版主,可否给我评个技术分哦 。 - -
作者: _code    时间: 2014-10-2 12:07
苏乞儿 发表于 2014-10-1 15:17
这个可以借鉴一直下张老师的高新部分,那里有关于hash的介绍,为了检索方便,分类存放的。。。 ...

多谢回复,谢谢了 ,!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2