| HashMap的数据结构: HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。首先,HashMap类的属性中定义了Entry类型的数组。Entry类实现java.ultil.Map.Entry接口,同时每一对key和value是作为Entry类的属性被包装在Entry的类中。
 如图所示,HashMap的数据结构:
 
 ![]() 
 
 HashMap的部分源码如下:
 可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表,当新建一个HashMap,就会初始化一个数组,table数组元素的类型就是Entry类型的,每个Entry就是一个键值对,并且持有一个指向下一个Entry元素的引用。复制代码/**  
* The table, resized as necessary. Length MUST Always be a power of two.  
*/    
    
transient Entry[] table;    
     
static class Entry<K,V> implements Map.Entry<K,V> {    
    final K key;    
    V value;    
    Entry<K,V> next;    
    final int hash;    
    ……    
}
 |