В ArrayList эффективное число равно N (N уже предполагает рост в будущем).
Э-э-э, нет, если я не пойму, что вы здесь говорите. Когда вы передаете целое число в конструктор Arraylist, он создает базовый массив именно этого размера. Если оказывается, что вам нужен хотя бы один дополнительный элемент, ArrayList потребуется изменить размер базового массива при следующем вызове add (), в результате чего этот вызов займет намного больше времени, чем обычно.
Если, с другой стороны, вы говорите о своем значении N с учетом роста - тогда да, если вы можете гарантировать, что значение никогда не превысит это значение, тогда целесообразно вызвать такой конструктор Arraylist. И в этом случае, как указал Хэнк, аналогичным конструктором для карты будет N и 1.0f. Это должно работать разумно, даже если вы действительно превышаете N (хотя, если вы ожидаете, что это произойдет на регулярной основе, вы можете передать большее число для первоначального размера).
Коэффициент загрузки, если вы не знали, - это точка, в которой карта будет иметь увеличенную емкость, как часть общей емкости.
Редактировать : Юваль, вероятно, прав, что лучше оставить коэффициент загрузки около 0,75 для карты общего назначения. Коэффициент загрузки 1,0 работал бы блестяще, если бы у ваших ключей были последовательные хеш-коды (например, последовательные целочисленные ключи), но для всего остального вы, скорее всего, столкнетесь с хэш-корзинами, что означает, что поиск для некоторых элементов занимает больше времени. Создание большего количества сегментов, чем это строго необходимо, уменьшит вероятность столкновения, а это означает, что существует большая вероятность того, что элементы окажутся в своих собственных контейнерах и, следовательно, будут найдены в кратчайшие сроки. Как говорят доктора, это время против космического компромисса. Если любой из них особенно важен для вас (как показано профилировщиком, а не преждевременно оптимизирует!), Вы можете подчеркнуть это; в противном случае придерживайтесь значения по умолчанию.