小牛
后端
·2025-04-16
day06 乱七八糟东学西学忘记时间打卡了┗|`O′|┛ ~~ 想了解一下前端debug,补了一下js的知识,看着看着又看到js逆向......项目没学习多少一天就过去了。 今日八股: HashMap 底层原理(jdk1.8)? HashMap 底层是数组和链表,HashMap 通过 key 的 hashcode 经过 hash 函数处理过后得到 hash 值,然后通过 (数组长度 - 1) & hash 判断当前元素存放的位置,如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树。 hash 函数 (h = key.hashCode()) ^ (h >>> 16) 可以将 hashcode 高位和低位的值进行混合做异或运算,这样低位的信息中加入了高位的信息,高位的信息就被变相地保留了下来,那么生成的 hash 值的随机性会增大,减少了 hash 碰撞。 明日计划: 继续学习用户传图章节。
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP