HashMap 中插入null key 的过程
来源:互联网 发布:空间自动留言软件 编辑:程序博客网 时间:2024/05/22 04:37
添加key==null的Entry时,调用putForNullKey方法
正常的是put方法:
当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。
当两个不同的键对象的hashcode相同时它们会储存在同一个bucket位置的链表中。键对象的equals()方法用来找到键值对。(比较key)
putForNullKey方法:
遍历table[0]的 Entry链表,寻找key==null的Entry
如果找到了覆盖原值,返回oldValue;没有找到就调用addEntry方法添加一个key—null的Entry
而addEntry是先判断是否需要扩容,Entry数大于等于临界值时扩为原来两倍,(每次扩容都是两倍),默认容量是16;
HashMap的负载因子默认为0.75,扩容临界值=HashMap最大容量(初始容量为16)*负载因子;
当容量达到2的31次方时,就不再扩容;
扩容resize扩容方法;
拷贝到新表方法 transfer方法;
不需要扩容就在table[0]进行头插;
总结:
1.先在table[0]的链表中寻找null key,如果有null key就直接覆盖原来的value,返回原来的value;
2.如果在table[0]中没有找到,就进行头插,但是要先判断是否要扩容,需要就扩容,然后进行头插,此时table[0]就是新插入的null key Entry了。
阅读全文
0 0
- HashMap 中插入null key 的过程
- HashMap中插入null key的过程分析
- HashMap中插入null key的过程分析
- 【Java面试题】HashMap中插入null key的过程
- HashMap中key为null时存到哪里去了
- HashMap、HashTable的key和value是否可为null
- Hashtable/HashMap与key/value为null的关系
- HashMap、HashTable的key和value是否可为null
- Hashtable/HashMap与key/value为null的关系
- HashMap存取过程中改变key值导致的内存泄露
- HashMap中取出全部的key
- HashMap和HashTable,HashMap中key和value的原理
- HashMap和HashTable,HashMap中key和value的原理
- HashMap和HashTable,HashMap中key和value的原理
- 看看源码怎么处理,Java中Hashtable,Hashmap,ConcurrentHashMap,Key Value为null时
- proc 存储过程,通过存储过程往数据库的某个表中插入指定数据量的纪录,表中有primary key
- java中map插入相同的key
- java HashMap插入重复Key值问题
- 物联网NB-IoT与LoRa技术对比
- 关于System.out.println(obj);
- 计算2017年11月11日 11时 11分 11秒 距离当前日期的时间差, 并以指定的格式(天/时/分/秒)的形式显示.
- nginx使用心得
- loj #2000. 「SDOI2017」数字表格 (莫比乌斯)
- HashMap 中插入null key 的过程
- 【CUGBACM15级BC第28场 A】hdu 5166 Missing number
- Vue.js- 修饰符
- 十进制数转化为任意进制
- servlet+Jsp电子商城案例-“商品”和“商品分类”实体管理,重点容易失误点总结
- java语言将数据导出成excel代码
- Mongodb数据库的主从分离模式-----可用于应对高并发
- Java笔记之Java的内存与回收
- 【leetcode】438. Find All Anagrams in a String(Python & C++)