map在存储的是k-v键值对映射数据
实现子类:
HashMap:数组+链表(1.7) 数组+链表+红黑树(1.8及以上版本)
LinkedHashMap:链表
TreeMap:红黑树
基本api的操作:
增加:
put(k,v) 给集合添加数据
查找:
isEmpty() 判断集合是否为空
size() 判断集合的大小
containsKey
containsValue
get
删除:
clear 清空集合中所有的元素
remove:删除指定元素
遍历:
map.entrySet():表示的是K-V组合的一组映射关系,key和value成组出现,使用映射作为迭代器,将他们作为一个整体
hashmap跟hashtable的区别:
1.hashmap线程不安全,效率高,hashtable线程安全,效率低
2.hashmap中的key和vlaue都可以为空,hashtable不允许为空
hashmap初始值为2的N次幂
1.方便进行&操作,提高效率,&操作要比取模运算效率更高
2.在扩容之后涉及到元素的迁移过程,迁移的时候只需要判断二进制前一位是0或1即可
源码分析:
1.默认初始值
2.加载因子
3.put操作
a.设置值,计算hash
b.扩容操作
c.数据迁移的过程