put

最先判断桶的长度是否为0,为0的话则需要先对桶进行初始化操作,接着,求出hashcode并通过扰动函数确定要put到哪个桶中,若桶中没有元素直接插入,若有元素则判断key是否相等,如果相等的话,那么就将value改为我们put的value值,若不等的话,那么此时判断该点是否为树节点,如果是的话,调用putreeval方法,以树节点的方式插入,如果不是树节点,那么就遍历链表,如果找到了key那么修改value,没找到新建节点插到链表尾部,最后判断链表长度是否大于8 是否要进行树化。

get

首先和put一样,确定对应的key在哪一个桶中,如果桶容量为0或者该桶内没有元素直接返回空,反之会判断该桶会检查桶中第一个元素是否和要查的key相等,相等的话直接返回,不相等的话判断该节点是否为树节点,是的话以树节点方式遍历整棵树来查找,不是的话那就说明存储结构是链表,已遍历链表的方式查找。

大话HashMap的put,get过程相关推荐

  1. HashSet/HashMap 存取值的过程

    HashSet与HashMap的关系: (1)HashSet底层用的是HashMap来实现的 (2)这个HashMap的key就是放进HashSet中的对象,value就是一个Object类型的对象 ...

  2. 大话ConcurrentHashMap的put,get过程

    put 最最最一开始得检查桶是否进行初始化,然后确定判断所放桶中是否有元素,没有元素的话,那么就用CAS的方式添加元素,当然有可能失败,有可能其他线程已经抢占先添加,这个过程在一个死循环里,失败了再从 ...

  3. HashMap 1.7 死循环过程

    "死锁"过程 为什么 hashmap底层数组大小为2的幂次 , 例如  初始化 16 计算hash值  时 (length-1)&(hash) 16-1  = 0000 1 ...

  4. hashmap的get查找过程

    1.通过hash值获取该key映射到的哈希桶 2.如果桶上的key就是要找的key,则找到并返回 3.不是的话,查看后续节点 (1).后续是红黑树,调红黑树的方法根据key获取value (2).后续 ...

  5. 大话TreeMap的put,get过程

    get 首先会判断在初始化TreeMap的时候是否传入了外部选择器Comparator,如果传入了,那么利用Comparator遍历整棵树,找到要存放的位置,利用Comparator的compare( ...

  6. hashmap put过程_看完还不懂HashMap算我输(附互联网大厂面试常见问题)

    HashMap的原理与实现 版本之更迭: –>JDK 1.7 : Table数组+ Entry链表: –>JDK1.8 : Table数组+ Entry链表/红黑树:(为什么要使用红黑树? ...

  7. HashTable和HashMap的区别详解

    HashTable和HashMap的区别详解 一.HashMap简介 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同 ...

  8. 彻底理解HashMap及LinkedHashMap

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://blog.csdn.net/fuzhongmin05/article/details/104355841 Ha ...

  9. 集合框架—HashMap

    HashMap提供了三个构造函数: HashMap():构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap. HashMap(int initialCapacity ...

最新文章

  1. php 签名开发,BOS签名算法的PHP demo
  2. C++和C#实现剪切板数据交互
  3. 如何避免面试中薪水要的太高或太低?
  4. Caffe: Faster-RCNN Python版本配置 (Windows)
  5. 阿里如何应对亿级高并发大流量?如何保障高可用和稳定性!
  6. python的if和else、for、while语法_python-变量、if else语句 、for循环、while循环(4月26号)...
  7. goim 中的 data flow 数据流转及思考
  8. css网格_CSS网格初学者指南
  9. Java、JS、C++ 依然强势,Go、Kotlin 等新语言为何不能破局?
  10. weblogic集群集群说明
  11. LDA主题模型(算法详解)
  12. android x5内核使用方法,android 快速教你集成腾讯X5内核
  13. Wireshark软件使用教程
  14. 浅谈项目管理结构化思维
  15. excel部分网格线不见了_EXCEL-绘制箱形图
  16. 基于ssm的学生管理系统源码+开题报告、任务书、文献综述
  17. 《数据库原理》——知识点总结(期末复习)
  18. 360测绘云Quake网络空间测绘系统双领域上榜“安全牛”
  19. OpenStack配置分布式路由(neutron)
  20. 界面美化 —— 布局

热门文章

  1. IO中的阻塞、非阻塞、同步、异步概念分析详解
  2. 如何进行I/O评估、监控、定位和优化?
  3. Kafka解析之topic创建(2)
  4. 视频加速方案的最优解 - Xilinx硬件加速技术专场(深圳站)
  5. LiveVideoStack线上分享第三季(四):计算存储在视频转码中的应用
  6. Java代码简化之朗母达表达式(Lambda Express)
  7. Java多线程之多线程之间按顺序调用
  8. 国内下载 Python 源码特别慢
  9. ngx_event_expire_timers
  10. FLV封装格式分析器