摘要
二进制计算的一些基础知识
为什么使用 hashcode
String 类型的 hashcode 方法
为什么大部分 hashcode 方法使用 31
HashMap 的 hash 算法的实现原理(为什么右移 16 位,为什么要使用 ^ 位异或)
HashMap 为什么使用 & 与运算代替模运算?
HashMap 的容量为什么建议是 2的幂次方?
我们自定义 HashMap 容量最好是多少?
前言
作为一个有抱负的 Java 程序员,在经过长期的CRUD 和 HTML 填空之后必须有所思考,因为好奇心是驱动人类进步的动力之一,我们好奇,比如我们常用的 HashMap 到底是如何实现的?我想,说到这里,稍微有点经验的大佬都会说:擦,面试必问好嘛?怎么可能不知道?
但是,我们真的了解他吗?
我们知道 HashMap 依赖的 hashcode 和 hash 算法到底是怎么实现的嘛?如果大佬说:早他么知道了。那就装不知道,听楼主吹吹牛逼好不啦。。。。
今天楼主不会讲 HashMap 的 put 方法实现和 get 方法实现,楼主要讲的是 HashMap 高度依赖的 hashcode 和 hash 算法,虽然在很多书里面,都说这是数学家应该去研究的事情&#x