双列集合特点
存放的是键值对对象(Entry)
Map
因为都是继承Map,所以要学会这些API,后面的类就都知道了
put
有两个操作,添加(并返回null)或者覆盖(返回被覆盖的值)
remove
根据键删除,返回的是被删除的值
其他的无所谓
Map的遍历方式
将keys放到单列集合中,取找值
通过键值对
Lambda表达式遍历
HashMap
HashMap的底层原理和HashSet一样,都是先为长度为16的数组。同时我发现了盲点,也就是扩容之后(2倍),原先的hashcode重新分配位置。
LinkedHashMap
和LinkedSet本质一样
TreeMap
源码解析
Ctrl+F12查看类成员
右箭头代表继承的方法
上箭头代表重写的方法
添加元素时 数组位置为null
resize()函数做的事情就是绿色字写的东西。
然后如果使用hashCode计算出来的位置处为null,那么重新创建一个保存Key和Value的Node
添加位置不为null,且Key并没有重复,挂在下面形成链表或者红黑树
添加位置不为null,且Key并重复,覆盖
主要注意的地方,注意只进行V的覆盖,并不是全覆盖
可变参数
小细节:
1、方法的形参中最多只能写一个可变参数
2、方法中的其他参数一定要写在可变参数前面
Collections(注意有s)
Collection的工具类,看API就行。