hashCode()
方法返回的是int整数类型,其范围为-(2 ^ 31)~(2 ^ 31 - 1),约有40亿个映射空间,而HashMap的容量范围是在16(初始化默认值)~2 ^ 30,HashMap通常情况下是取不到最大值的,并且设备上也难以提供这么多的存储空间,从而导致通过hashCode()
计算出的哈希值可能不在数组大小范围内,进而无法匹配存储位置;
(Java集合面试题)HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
相关推荐
- (Java集合面试题)TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
- (Java集合面试题)与Java集合框架相关的有哪些最好的实践?
- (Java集合面试题)大写的O是什么?举几个例子?
- (Java集合面试题)集合框架里实现的通用算法有哪些?
- (Java集合面试题)我们如何从给定集合那里创建一个synchronized的集合?
- (Java集合面试题)当一个集合被作为参数传递给一个函数时,如何才可以确保函数不能修改它?
- (Java集合面试题)我们如何对一组对象进行排序?
- (Java集合面试题)Comparable和Comparator接口有何区别?