Map

97 阅读2分钟

Map接口介绍

Map接口定义了双例集合的存储特征,它并不是Conllection接口的子接口,双例集合的存储特征是以key与value结构为单位进行存储。体现的是数学中函数的概念。

Map与Collection的区别:

  • Collection中的容器,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。
  • Map中的容器,元素是以成对存在的,每个元素由键与值两部分吧组成,通过键可以找到所对应的值。
  • Conllection中的容器称为单例集合Map中的容器称为双例集合
  • Map中的集合不能包含重复的键,值可以重复;但键只能对应一个值
  • Map中常用的容器为HashMap,TreeMap等

Map接口中常用的方法表

image.png

HashMap容器的使用

该容器采用哈希算法实现,是Map接口最常用的实现类,由于底层采用哈希表存储数据,所以要求键不能重复,如果发成重复,那么新的键值会替换旧的键值。HashMap在查找,删除,修改方面都有了非常高的效率。

HashTable类与HashMap用法几乎一样,底层实现几乎一样,只不过HashTable的方法添加了synchronized关键字确保线程同步检查,效率较低。

HashMap与HashTable的区别 (面试常考)

  • HashMap:线程不安全,效率高,允许key或value为null;
  • HashTable:线程安全,效率低。不允许key或者value为null;

HashMap底层源码分析

见文档

TreeMap容器的使用

TreeMap和HashMap同样实现了Map接口,对于API的用法没有区别。HashMap效率高于TreeMap;TreeMap是可以对键进行排序的一种容器,在需要对键排序时可选用TreeMapTreeMap底层是基于红黑树实现的。

在使用TreeMap时需要给定排序规则
  • 元素自身实现比较规则
  • 通过比较器实现比较规则

TreeMap底层源码分析

见文档