Выбор ответа Senior Коллекции изнутри обновлено
Начальная ёмкость HashMap
Вопрос
Нужно положить ровно 1000 элементов в HashMap без единого resize. Что передать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: HashMap.newHashMap(1000) или new HashMap<(1334) под load factor. Аргумент конструктора это ёмкость таблицы, а resize происходит при превышении capacity × 0.75.
Варианты ответа
new HashMap<>(1000): ёмкость ровно под число элементовHashMap.newHashMap(1000)илиnew HashMap<>(1334)под load factorправильный ответnew HashMap<>(1024): ближайшая степень двойки к 1000new HashMap<>(500): таблица всё равно удвоится один раз
Разбор
Аргумент конструктора это ёмкость таблицы, а resize происходит при превышении capacity × 0.75. Для 1000 элементов нужна ёмкость не меньше 1000 / 0.75 ≈ 1334, HashMap округлит её до 2048. new HashMap<>(1000) даст таблицу 1024 с порогом 768, и на 769-м элементе будет resize. Ровно эту арифметику делает фабрика HashMap.newHashMap(int numMappings), добавленная в Java 19.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.