HashMap详解

HashMap是一个散装桶(数组或链表),它存储的内容是键值对(key-value)映射。

HashMap采用了数组和链表的数据结构,继承了数组的线性查找和链表的寻址修改。

   

HashMap是非synchronized的,所以很快。

   

HashMap可以接受null键和值,而HashTable不能。

   

ConcurrentHashMapHashTable因为在多线程并发的情况下,put操作时无法分辨key是没找到为null,还是key值对应的valuenull,所以基于这类情况不允许键值为null

HashMap是线程不安全的,也就无所谓了。

HashMap详解

 

    

【工作原理】

HashMap是基于hashing的原理,咱们使用putkeyvalue)把对象存储到HashMap中,使用getkey)从HashMap中获取对象。

   

当我们使用put方法传递键值对的时候,先对键调用hashCode方法,计算并返回的hashCode……

HashMapbucket中存储键对象和值对象,作为Map.node

   

以下是HashMap的初始化(简单模拟):

Node table = new Node[16] //散列桶初始化,table

class Node {

hash; //hash

key; //

value; //

Node next; //用于指向链表的下一层(产生冲突,用拉链法)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsspxz.html