特点:
1:存值是无序的
2:键和值都可以为null 但是 键是能是一个为null
3:键的位置是惟一的,底层的数据结构控制键的
4:jdk1.8之前是 链表+数组 jdk1.8之后是链表+数组+红黑树
5:(阀值)>8 并且数组长度大于64,才能将链表转换为黑红树,变成黑红树的目的是为了高效的查询
当对象的hashCode相等时会产生hash碰撞 若key内容相同则替换旧的value,不然就链到表的后方,链表长度超过阀值8就转换为黑红树
&(按位与运算):运算规则:相同二进制位上都是1的时候结果为1 否则为0
^(按位异或运算):运算规则:相同二进制位数上,数字相同结果为0不同为1.
初始化容量初始化 也就是new HashMap()小括号里的值
数量=需要储存数量/负载因子+1 负载因子(0.75)
map便利的几种方法
public static void method1(HashMap<String,String> map) {
Set<Map.Entry<String,String>> entries= map.entrySet();
for(Iterator<Map.Entry<String,String>> it= entries.iterator();it.hasNext()😉{
Map.Entry<String,String> its= it.next();
System.out.println(its.getKey()+"–"+its.getKey());
}
}
public static void method3(HashMap<String,String> map) {
map.forEach((key,value)->{
System.out.println(key+"====="+value);
});
}