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 · 1027 阅读 · 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 · 326 阅读 · 0 评论 -
了解HashMap扩容机制(JDK8)
最近做项目的时候,添加了阿里的代码规范扫描插件 扫描的时候指出我的HashMap未指定初始化大小,这是不规范的 推荐:HashMap集合初始化时, 指定集合初始值大小。 网上给的解释是: 不指定的话,hashMap的每次put,会去判断是否到达HashMap的极限值(桶的大小*0.75(负载因子) ),到达即调用resize方法,如果频繁的调用resize会影响性能 注意:桶大小不等于size,可...原创 2019-02-18 14:56:08 · 972 阅读 · 0 评论 -
HashMap在Java面试中比较常见,深入的问题
HashMap为什么用HashMap与HashTable的区别?HashMap工作原理是什么?put()实现get()实现resize()/扩容实现Hash碰撞为什么HashMap允许为空 Hashtable不允许为空为什么String, Interger这样的封装类适合作为键?为什么HashMap的桶数组长度一定是2的次幂?合理存放元素均匀分布,减少碰撞总结参考文档 为什么用HashMap ...原创 2019-05-29 11:48:26 · 220 阅读 · 0 评论