1.Map集合概述
Map集合是键值对(key-value)集合
使用场景:购物车信息中<商品,购买数量>的键值对
2.Map的特点
是个泛型接口,Map集合key是无序不重复的,而value是可以重复的,重复key对应的value会覆盖原来的value
HashMap 无序,无索引,不可重复
LinkedHashMap 有序,无索引,不可重复
TreeMap
3.Map的API
是非常常用的,比collection的API更常用!!!所以需要记住这些API
用父类接口来接收为什么可以体现多态
4.Map集合的遍历
键找值
转化成Set
利用maps.forEach
里面用匿名类的形式实现了泛型接口BiConsumer,所以可以用Lambda表达式简化
5.Map集合的应用Demo
6.HashMap
6.1 HashMap特点
是Map的一个实现类,无序不重复无索引
方法就是Map的那些常用api
6.2 HashMap底层原理
和HashSet的原理都是哈希表,但是HashMap的每个元素包含两个值
一个惊人的事实(标题党hhh)
Set系列集合的底层是靠Map实现的,但是Set集合中元素只保留了Key而没有Value,JDK源码如图
hashcode方法和equals方法保证了键的唯一。如果要使用自定义类则要重写这两个方法
7.LinkedHashMap
由键决定有序无重复,有序是说的存入顺序
7.2 LinkedHashMap底层原理
底层仍然是哈希表,但是多了双链表来记录顺序
![在这里插入图片描述](https://img-blog.csdnimg.cn/676874deb5234af39240d4f122b54267.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ3lhbjY2,size_20,col比较器来确定排序规则