Всего несколько минут назад я ответил на вопрос о максимальном возможном размере HashMap в Java. Как я всегда читал, HashMap - это растущая структура данных. Этот размер ограничен только размером памяти JVM. Поэтому я думал, что нет жесткого ограничения его размера и соответственно ответил. (То же самое применимо и к HashSet.)
Но кто-то исправил меня, сказав, что, поскольку метод size() HashMap возвращает int, существует ограничение на его размер. Совершенно правильная точка. Я просто попытался протестировать его на локальном компьютере, но не смог, мне нужно больше, чем 8 ГБ памяти, чтобы вставить более 2 147 483 64де целых чисел в HashMap, которых у меня нет.
Мои вопросы были:
- Что происходит, когда мы пытаемся вставить 2 147 473 647 + 1 элемент в HashMap/HashSet?
- Есть ли ошибка?
- Если да, какая ошибка? Если не то, что происходит с HashMap/HashSet, то уже существующих элементов и нового элемента?
Если кто-то получает доступ к машине с 16 ГБ памяти, вы можете попробовать ее практически.:)