![](https://img-blog.csdnimg.cn/20190817075642460.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
hashMap源码分析
简单叙述hashmap的源码
莫失莫忘hh
保持学习,保持充实
展开
-
HashMap源码分析(一)之hash方法,put方法,resize方法
1、什么是HashMapHashMap是基于hash表的一个Map接口的实现。也就是数组+链表的存储方式。、数组特点:查找快 增删 慢链表的特点: 增删快 查找慢数组链表将两个特性结合了哈希表、是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列...原创 2019-07-19 23:19:11 · 688 阅读 · 2 评论 -
HashMap源码分析之putTreeVal方法
1、概要Hashmap的put方法在进行操作的时候会,先根据key找到 该元素应该存在数组上的具体位置------table[i]。其中有一步操作是(p instanceof TreeNode),也就是判断该节点是不是树形节点。也就是判断此时,该位置的链表是否已经构建成红黑树。如果是的话将执行.putTreeVal(this, tab, hash, key, value);方法。2、具体方法p...原创 2019-07-22 15:57:44 · 1557 阅读 · 5 评论 -
HashMap源码分析之treeifyBin、treeify方法、moveRootToFront方法
一、概述我们知道hashmap的结构是数组+链表。当发生冲突的时候,冲突的节点会以链表的形式存储在对应桶的位置上。当冲突变的越来越多时,hashmap查找的效率愈发底下。因为链表的查询的时间复杂度是O(n),所以jdk1.8,推出了红黑树,来提高查找效率。具体就是,当链表的节点大于8之后。链表会转换成红黑树的存储形式,红黑树其实也就是一种查找树。然后又多加了额外的性质。使得红黑树的查找效率提高到...原创 2019-07-22 22:51:39 · 1246 阅读 · 0 评论