大话HashMap的put,get过程
put
最先判断桶的长度是否为0,为0的话则需要先对桶进行初始化操作,接着,求出hashcode并通过扰动函数确定要put到哪个桶中,若桶中没有元素直接插入,若有元素则判断key是否相等,如果相等的话,那么就将value改为我们put的value值,若不等的话,那么此时判断该点是否为树节点,如果是的话,调用putreeval方法,以树节点的方式插入,如果不是树节点,那么就遍历链表,如果找到了key那么修改value,没找到新建节点插到链表尾部,最后判断链表长度是否大于8 是否要进行树化。
get
首先和put一样,确定对应的key在哪一个桶中,如果桶容量为0或者该桶内没有元素直接返回空,反之会判断该桶会检查桶中第一个元素是否和要查的key相等,相等的话直接返回,不相等的话判断该节点是否为树节点,是的话以树节点方式遍历整棵树来查找,不是的话那就说明存储结构是链表,已遍历链表的方式查找。
大话HashMap的put,get过程相关推荐
- HashSet/HashMap 存取值的过程
HashSet与HashMap的关系: (1)HashSet底层用的是HashMap来实现的 (2)这个HashMap的key就是放进HashSet中的对象,value就是一个Object类型的对象 ...
- 大话ConcurrentHashMap的put,get过程
put 最最最一开始得检查桶是否进行初始化,然后确定判断所放桶中是否有元素,没有元素的话,那么就用CAS的方式添加元素,当然有可能失败,有可能其他线程已经抢占先添加,这个过程在一个死循环里,失败了再从 ...
- HashMap 1.7 死循环过程
"死锁"过程 为什么 hashmap底层数组大小为2的幂次 , 例如 初始化 16 计算hash值 时 (length-1)&(hash) 16-1 = 0000 1 ...
- hashmap的get查找过程
1.通过hash值获取该key映射到的哈希桶 2.如果桶上的key就是要找的key,则找到并返回 3.不是的话,查看后续节点 (1).后续是红黑树,调红黑树的方法根据key获取value (2).后续 ...
- 大话TreeMap的put,get过程
get 首先会判断在初始化TreeMap的时候是否传入了外部选择器Comparator,如果传入了,那么利用Comparator遍历整棵树,找到要存放的位置,利用Comparator的compare( ...
- hashmap put过程_看完还不懂HashMap算我输(附互联网大厂面试常见问题)
HashMap的原理与实现 版本之更迭: –>JDK 1.7 : Table数组+ Entry链表: –>JDK1.8 : Table数组+ Entry链表/红黑树:(为什么要使用红黑树? ...
- HashTable和HashMap的区别详解
HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...
- 彻底理解HashMap及LinkedHashMap
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/fuzhongmin05/article/details/104355841 Ha ...
- 集合框架—HashMap
HashMap提供了三个构造函数: HashMap():构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap. HashMap(int initialCapacity ...
最新文章
- php 签名开发,BOS签名算法的PHP demo
- C++和C#实现剪切板数据交互
- 如何避免面试中薪水要的太高或太低?
- Caffe: Faster-RCNN Python版本配置 (Windows)
- 阿里如何应对亿级高并发大流量?如何保障高可用和稳定性!
- python的if和else、for、while语法_python-变量、if else语句 、for循环、while循环(4月26号)...
- goim 中的 data flow 数据流转及思考
- css网格_CSS网格初学者指南
- Java、JS、C++ 依然强势,Go、Kotlin 等新语言为何不能破局?
- weblogic集群集群说明
- LDA主题模型(算法详解)
- android x5内核使用方法,android 快速教你集成腾讯X5内核
- Wireshark软件使用教程
- 浅谈项目管理结构化思维
- excel部分网格线不见了_EXCEL-绘制箱形图
- 基于ssm的学生管理系统源码+开题报告、任务书、文献综述
- 《数据库原理》——知识点总结(期末复习)
- 360测绘云Quake网络空间测绘系统双领域上榜“安全牛”
- OpenStack配置分布式路由(neutron)
- 界面美化 —— 布局