一、Map集合的定义
Map集合和Collection集合没有任何关系。Collection集合是以单个方式存储元素的,而Map集合是以键值对的方式存储元素,所有Map集合的Key是无序不可重复的,key和value都是引用数据类型,存的都是内存的地址。
Map集合的实现类主要为HashMap、TreeMap。子接口有一个LinkedHashMap
![](https://i-blog.csdnimg.cn/blog_migrate/725ffd757f285d1cf1ea4893654565f7.png)
二、Map集合的特点
1.Map是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
3.Map中的元素,key不允许重复,value可以重复
4.Map里的key和value是一一对应的。
若是有重复的键添加,则会以最后一次的键为准,而其他的键会被覆盖。集合都在
java.util包下,所以需要导包。
三、HashMap的特点及使用
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
![](https://i-blog.csdnimg.cn/blog_migrate/2e9ae56b0c0aa9fcea7ff37d675e1ba8.png)
四、ListHashMap的特点
1.LinkedHashMap底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap是一个有序的集合,存储元素和取出元素的顺序一致
跟Hashmap相比的区别:元素存储有序了
![](https://i-blog.csdnimg.cn/blog_migrate/8ced0d10014755afc346eb2a18b5ee63.png)
五、Treemap
Treemap和上面两种是非常类似的,下面是跟前者的区别:
1、TreeMap是根据元素的内部比较器进行排序的,它可以根据key值的大小排序;
LinkedHashMap是保持存放顺序的。
2、TreeMap采用红黑树算法,遍历效率高;
LinkedHashMap采用链表实现,添加删除时效率高,遍历时效率低。
大家可以根据不同的实际情况来选择这三种Map