| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java--几种位运算及常见进制说明(解读HashMap源码必备知识) -> 正文阅读 |
|
[Java知识库]Java--几种位运算及常见进制说明(解读HashMap源码必备知识) |
【学习背景】
进入正文~ 目录常见几种进制?
Java八种按位运算?
HashMap添加元素四步曲用到的位运算?前奏:HashMap如何添加一个元素?HashMap底层数据结构是
Java HashMap添加元素的示例代码:
HashMap底层put(key,value)方法源码:
接下来将解读底层源码用到哪些位运算,有什么奥妙之处 第一步曲根据key得到hashCode值
这里key是字符串"name",String重写了计算字符串hashCode值的hashCode()方法,源码如下: 第二步曲根据hashCode值计算出hash值 第三步曲根据hash值计算出元素(key/value)最终要放在哪个数组index下标 但是HashMap这里没有使用 HashTable底层倒是用的%取模,hash值与十六进制 第四步曲最后根据元素(key/value)新建节点并保存到指定数组index下标位置
终曲:为什么HashMap底层源码用这么多位运算?关于位运算的使用,文中在介绍第三步曲时,也提到了HashMap计算数组下标使用%取模和位运算的问题,使用于位运算的奥妙之处在直接从内存读取数据进行计算,不需要转成十进制,如果使用%取模需要先转成十进制,有性能开销,效率比较低 HashMap底层除了文中提到的 ** |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:05:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |