在HashMap中存储的对象多于int的范围

时间:2017-11-29 12:51:26

标签: java hashmap

我正在阅读关于HashMap的内容。 HashCoderetur int值。如果我有巨大的HashMap,它需要存储比int范围更多的对象,该怎么办?考虑到每个对象HashCode()方法将返回唯一值。在这种情况下会发生什么

  1. 是否抛出任何异常?或者
  2. 它会随机出现吗?

1 个答案:

答案 0 :(得分:0)

你的意思是存储超过20亿条目? Java集合或映射不能这样做,它们的大小始终是int值。

有大型地图的第三方图书馆。

您确定无论如何都可以将这么多物品存放在内存中吗?一个对象至少需要24个字节(你将超出压缩OOPS的范围),因此你将使用超过100千兆字节的RAM,这就是存储在HashMap中的非常小的对象。

PS:我不明白你的意思是“hashCode返回一个唯一值”。哈希码不必是唯一的。对于2亿次入口哈希映射,32位哈希码有点弱,但理论上仍然可行。