Map接口介绍
Map接口定义了双例集合的存储特征,它并不是Conllection接口的子接口,双例集合的存储特征是以key与value结构为单位进行存储。体现的是数学中函数的概念。
Map与Collection的区别:
- Collection中的容器,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。
- Map中的容器,元素是以成对存在的,每个元素由键与值两部分吧组成,通过键可以找到所对应的值。
- Conllection中的容器称为单例集合,Map中的容器称为双例集合。
- Map中的集合不能包含重复的键,值可以重复;但键只能对应一个值
- Map中常用的容器为HashMap,TreeMap等
Map接口中常用的方法表
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是可以对键进行排序的一种容器,在需要对键排序时可选用TreeMap。TreeMap底层是基于红黑树实现的。
在使用TreeMap时需要给定排序规则
- 元素自身实现比较规则
- 通过比较器实现比较规则
TreeMap底层源码分析
见文档