
Java HashMap 源码分析
JDK1.8的HashMap,死磕到底
西二旗王员外
我的个人笔记,如果有幸对您有帮助,欢迎点赞…………
展开
-
Java之HashMap源码分析(第九篇:总结)
http://wiki.jikexueyuan.com/project/java-collection/hashmap.htmlHashMap 的实现原理(基于JDK1.7)可以先了解个大概https://zhuanlan.zhihu.com/p/50675786?utm_source=wechat_session&utm_medium=social&utm_oi=10923...原创 2020-05-24 23:42:02 · 231 阅读 · 0 评论 -
Java之HashMap源码分析(第八篇:扩容细节分析)
Java之HashMap源码分析(第三篇:扩容),在第三篇中,做了分析,但诸多疑问,扩容追求细节0、原创 2020-05-06 21:50:02 · 1213 阅读 · 0 评论 -
Java之HashMap源码分析(第七篇:遍历元素)
遍历HashMap对象,三个方法都可以0、无参 public Set<Map.Entry<K,V>> entrySet() { Set<Map.Entry<K,V>> es; return (es = entrySet) == null ? (entrySet = new Entry...原创 2020-03-13 21:47:06 · 411 阅读 · 0 评论 -
Java之HashMap源码分析(第六篇:结点对象分析)
Node定义HashMap中,以静态内部类形式存在,它出色的完成了存储任务每个Node对象负责持有Key对象、负责持有Value对象、负责持有称为hash的int值、负责持有下一个Node对象(单链表用)0、四个参数 Node(int hash, K key, V value, Node<K,V> next) { this....原创 2020-03-12 23:32:43 · 211 阅读 · 0 评论 -
Java之HashMap源码分析(第五篇:访问元素)
0、原创 2020-12-07 23:24:58 · 346 阅读 · 1 评论 -
Java之HashMap源码分析(第四篇:扩容机制)
本文源码基于JDK1.8+HashMap中有多达七处进行了扩容,统统调用了resize()方法,我看了很多HashMap的文章,我发现怎么看都记不住,所以我决定还是自己总结一篇扩容过程的文章!下面就是resize()方法的源码,整个方法最后会返回一个数组对象,作者写的实在精妙,resize方法比较长哈,所以我一段一段的分析final Node<K,V>[] resi...原创 2020-11-30 22:29:19 · 758 阅读 · 0 评论 -
Java之HashMap源码分析(第三篇:删除元素)
0、JDK1.8中,HashMap中删除的元素的办法有很多,有自己的,也有迭代器的1、这是最常用的 public V remove(Object key) { Node<K,V> e; return (e = removeNode(hash(key), key, null, false, true)) == null ? ...原创 2020-11-19 21:34:29 · 1506 阅读 · 0 评论 -
Java之HashMap源码分析(第二篇:添加元素)
(注意:本文基于JDK1.8)(文章版本:v1.0)前言 在第一篇文章中,我着手分析了HashMap对象的创建,创建HashMap对象是为了使用它提供的功能,这篇一起学习HashMap添加元素的功能是如何实现的? 假设你有一个Person对象需要保存到HashMap容器中,此时你需要先准备一个Key对象,存储的Person对象则作为Value对象,以后你只需要使用Key对象就可以从HashMap对象中查找到存储的Person对象,那么这个Person对象是如何添加到HashMap中的...原创 2020-03-06 17:05:06 · 4044 阅读 · 3 评论 -
Java之HashMap源码分析(第一篇:创建对象)
创建一个HashMap对象,4个构造方法可以供我们使用0、无参数 public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted }为每个HashMap对象持有的loadFactor赋值为0.75f,loadFactor在HashMa...原创 2020-03-06 15:05:49 · 954 阅读 · 0 评论