补充:
1、为什么需要重写equals方法和hashcode方法:
1)如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;
2)如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)
如果不被重写(原生Object)的hashCode和equals是什么样的?
不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。
不被重写(原生)的equals方法是严格判断一个对象是否相等的方法(object1 == object2)。
原文:https://blog.csdn.net/u014590757/article/details/79501332
2、为什么长度是2^n
最主要的原因是:当容量一定是2^n时,h & (length - 1) == h % length
原文:https://blog.csdn.net/u014590757/article/details/79501332