Что происходит, когда достигается максимальная емкость HashMap или HashSet?

Всего несколько минут назад я ответил на вопрос о « Максимально возможный размер HashMap в Java ». Как я всегда читал, HashMap - это растущая структура данных. Его размер ограничен только размером памяти JVM. Поэтому я подумал, что для его размера нет жесткого ограничения, и ответил соответственно. (То же самое применимо и к HashSet.)

Но кто-то поправил меня, сказав, что, поскольку метод size () в HashMap возвращает int , существует ограничение на его размер. Совершенно правильный момент. Я просто попытался протестировать его на своем локальном компьютере, но потерпел неудачу, мне нужно более 8 ГБ памяти, чтобы вставить более 2147483647 целых чисел в HashMap, которых у меня нет.

Мои вопросы:

  • Что происходит, когда мы пытаемся вставить 2 147 483 647 + 1 элемент в HashMap / HashSet?
  • Выдается ли ошибка?
  • Если да, то какая? Если не то, что происходит с HashMap / HashSet, это уже существующие элементы и новый элемент?

Если у кого-то есть доступ к машине с, скажем, 16 ГБ памяти, вы можете попробовать это на практике. :)

18
задан Bhushan 23 December 2011 в 16:09
поделиться