在java中,HashMap 或者HashTable,它们的键值被放满了,会出现啥情况( 二 )
或者不断的rehash导致capacity变大,我们查看resize方法可以知道一旦超过了MAXIMUM_CAPACITY,jdk仅仅是将 threshold 改为 Integer.MAX_VALUE void resize(int newCapacity) { Entry oldTable = table; int oldCapacity = oldTable.length; if (oldCapacity == MAXIMUM_CAPACITY) { threshold = Integer.MAX_VALUE; return; } 【在java中,HashMap 或者HashTable,它们的键值被放满了,会出现啥情况】 那如果最后超过了Integer.MAX_VALUE怎么办?我估计是jvm会自动根据之前分配的内存继续增大threshlod,当然抛出一个异常也未尝不可。
顺便吐槽一下题主,注意大小写!没有HashTable只有Hashtable!!
■网友
放满了自动会增加空间咯~HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
■网友
hashmap扩充是咋样扩充 2倍吗?
■网友
会触发rehash,底层实现根据jdk版本不同而不同。jdk1.7,会讲冲突的key放入链表里。jdk1.8,如果链表长度大于8,则转成红黑树存储。
■网友
没填满之前就会扩容,然后重新哈希,请估算对象数量先。
推荐阅读
- 商家通过低保户购物而把自己的利润返还赠送低保户安装宽带或者旧电脑可行吗
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 大部分黑客或安全研究员读的是啥「大学专业 」
- 开发/维护 一个类似qq会员或者Amazon Prime会员的会员系统有哪些难点和挑战
- 作为一个服装供应商,怎么样与淘宝卖家沟通才能卖出自己的产品或者拿到订单
- 是否该停止密码掩饰了
- 淘宝上有啥体验不错的假货,赝品或者山寨货?
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- ibeacon目前在国内有已经应用或者商用的产品案例吗
- 为啥没有给医院、医生评分的APP或者网站
