搜索
您的当前位置:首页正文

Java中的常见五种map容器源码分析总结(HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap、TreeMap)

来源:星星旅游

  断断续续写了半个月,今天终于把TreeMap容器中的红黑树搞定了,现在来水一篇又快又短Java Map容器总结博客 😂😂。

注明:本篇博客不会涉及容器的源码什么的,主要是总结各个map容器的底层实现特点、主要运用场景。如果你需要详细了解更多关于Java中的map容器实现的细节,文末会提供我前面写的源码分析的博客链接,欢迎阅读。

一、Java中的Map容器概述

  Map是一种存储key-value键值对)的容器,在Java中,常见的Map接口的实现类有五种,分别是HashMapHashtableConcurrentHashMapLinkedHashMapTreeMap。五种容器的关系如下图:

  顺带一提,貌似有不少人觉得map就是hashmaphashmap就是map,把hashmap两个概念混为一谈。然而map是用于存储key-value的虚拟容器,按照key的hash值将节点散列到一个table数组(也称hash表)的table[i](也称hash桶)中。等你看完TreeMap的底层数据结构就会发现,不通过key.hash值,也可以实现map容器

二、HashMap容器

1、HashMap概述

  Java中的HashMap底层使用一个table数组存放节点,使用链表(JDK 1.8新增红黑树)解决hash冲突(多个元素的hash值散列到同一个table[i]中)的问题。

2、HashMap数据结构示意图

3、HashMap特点

  • ①、存取高效,不支持并发读写操作࿰

因篇幅问题不能全部显示,请点此查看更多更全内容

Top