type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。

📝 HashMap 源码阅读

HashMap 这种Key,Value 的存储结构,是我们在写代码中经常使用到的.可以说使用是非常频繁的,不过现在使用JSONObject也是非常多的,二者都是实现了Map接口
所以看下HashMap源码是非常有必要的

结构

这里我们要看下 HashMap的内部类
这里的 Node 节点就是 HashMap存放数据的结构. hash 计算出来的哈希值,key就是HashMap中的key,value就是key对应的value的值. 这个 next 就是 key 不一样,计算出来的hash却是一样的,这样就有了hash冲突,所以就将节点存放在next里面了,从尾部插入进去. java8 后,如果next的长度是大于8的话,就会转化了红黑树来存储,那样获取值的速度变快了
TreeNode 这个内部类就是表示红黑树的. TODO 后续进行更新
参数, 可以看到 HashMap 是使用了一个数组来进行存储 Node节点

方法

构造函数

put方法

get方法

isEmpty方法

isEmpty 方法,这里就直接使用 size == 0 来进行判断,如果你的map是null的话,直接调用这个方法就会出现空指针

🤗 总结归纳

这里只是选用了 put 和 get方法来进行讲解,因为这二个是经常调用的,所以得明白是一个怎么样得大体流程走向才行

📎 参考文章

 
💡
有关文章的问题,欢迎您在底部评论区留言,一起交流~