深入理解java中的HashMap

HashMap介绍 

  hashMap是java中一个非常重要的数据结构,工作中也会经常使用到。

  HashMap与Map接口的关系

    HashMap继承于AbstractMap类,实现了Map接口,Map是key-value键值对的接口,AbstractMap实现了"键值对"的通用函数接口。

 

 TreeMap是基于树的实现,HashMap,HashTable,ConcurrentHashMap是基于hash表的实现

 hashMap说明手册:https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

  

 

 

HashMap实现原理

  HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元,每一个Entry包含一个key-value键值对。

  在JDK1.6,JDK1.7中,HashMap采用位桶(数组)+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值为8时,将链表转换为红黑树,这样大大减少了查找时间。

posted @ 2021-02-18 14:58  songguojun  阅读(301)  评论(0编辑  收藏  举报