
Java Map容器(JDK8底层实现探索)
aka这里是你的程序员
勿忘初心
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HashMap中put方法底层实现(JDK8)
1.进入put方法的实现public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}2.跳转到putVal方法 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, b...原创 2019-04-12 14:56:02 · 1090 阅读 · 1 评论 -
HashMap的get方法实现:JDK8
查阅资料后加上自我理解,如有问题,请多指教调用 get方法,进入内部public V get(Object key) { Node<K,V> e;// 每个key/value 对应一个Node // 通过getNode获取对应的节点取Key所在的节点 // 三元运算符判断节点key是否存在 return (e = g...原创 2019-04-11 15:14:19 · 402 阅读 · 0 评论 -
了解HashMap扩容机制(JDK8)
最近做项目的时候,添加了阿里的代码规范扫描插件扫描的时候指出我的HashMap未指定初始化大小,这是不规范的推荐:HashMap集合初始化时, 指定集合初始值大小。网上给的解释是:不指定的话,hashMap的每次put,会去判断是否到达HashMap的极限值(桶的大小*0.75(负载因子) ),到达即调用resize方法,如果频繁的调用resize会影响性能注意:桶大小不等于size,可...原创 2019-02-18 14:56:08 · 1102 阅读 · 0 评论 -
HashMap在Java面试中比较常见,深入的问题
HashMap为什么用HashMap与HashTable的区别?HashMap工作原理是什么?put()实现get()实现resize()/扩容实现Hash碰撞为什么HashMap允许为空 Hashtable不允许为空为什么String, Interger这样的封装类适合作为键?为什么HashMap的桶数组长度一定是2的次幂?合理存放元素均匀分布,减少碰撞总结参考文档为什么用HashMap...原创 2019-05-29 11:48:26 · 542 阅读 · 0 评论