В моей программе пары ключ-значение часто добавляются к Map
до тех пор, пока не добавятся 1G пар. Изменение размера карты замедляет процесс. Как установить минимальный размер Map
, например 1000000007 (что является простым)?Установить минимальный размер карты в Java
ответ
Конструктор HashMap
берет начальный размер карты (и коэффициент нагрузки, если требуется).
Map<K,V> map = new HashMap<>(1_000_000_007);
См. [HashMap Constructor] (https://docs.oracle.com/ javase/8/docs/api/java/util/HashMap.html # HashMap-int-) для получения дополнительной информации, если этот ответ недостаточно ясен. –
Я бы рекомендовал написать '1_000_000_007' для удобства чтения. – zyexal
Как я могу установить минимальный размер карты, например 1000000007 (который является первичным)?
Использование конструктора HashMap(int)
или HashMap(int, float)
. Параметр int
- это емкость.
HashMap должен иметь размер, который является простым для минимизации кластеризации.
Прошедшие и текущие варианты реализации HashMap
конструктора будет все выбрать мощность, которая является наименьшей степенью 2 (до 2), которая больше или равна мощности, подаваемой. Поэтому использование простого числа не имеет никакого эффекта.
Будет ли конструктор предотвращать изменение размера карты?
HashMaps не изменяет размер.
(Обратите внимание, что размер и емкость разные вещи. Метод size()
возвращает количество записей в настоящее время в Map
. Вы не можете «установить» размер.)
Собственно, это был его вопрос, а не как создать карту с начальным размером. –
@ROMANIA \t Нет, начальный вопрос заключался в том, как создать карту с минимальным размером. Это прямо в вопросе. –
@DaveNewton, это дискуссионно, но он хотел (согласно заголовку) установить ** Минимальный размер карты в Java **, а не ** Установить начальный размер карты в Java **. Это то, что я понимаю, - что он считал, что «HashMap» уменьшит свой размер во время некоторых действий, и он хотел исправить минимальный размер. –
может из вещей, которые вы должны отметить. Количество ведер в HashMap - это мощность 2 (может и не быть в будущем), следующая мощность 2 составляет 2^30. Коэффициент нагрузки определяет, при каком размере он должен вырастить карту. Обычно это 0,75.
Если вы зададите требуемый размер емкости, это будет;
- раунд до следующей степени 2
- еще может изменить размер, когда емкость * 0,75 достигается.
- ограничено 2^30 в любом случае, так как это максимальная мощность 2, которую вы можете иметь для размера массива.
Будет ли конструктор предотвращать изменение размера карты?
Единственный способ сделать это - скопировать все элементы в новую карту. Это не делается автоматически.
На самом деле, количество ведер в ** _ текущая реализация _ ** 'HashMap' - это мощность 2. Вероятно, это не изменится, но эта деталь реализации - это * не * часть договора интерфейса и не должна полагаться на. Это не всегда может быть силой 2. – AJNeufeld
- 1. Как установить минимальный размер экрана?
- 2. Как установить минимальный и размер
- 3. Размер карты Java-карты
- 4. Как установить минимальный размер контейнера в fxml
- 5. Как установить минимальный размер окна в wxWidgets?
- 6. Как установить минимальный размер окна в tkinter?
- 7. Установить минимальный размер шага в диаграмме JS
- 8. Установить минимальный размер сценария компоновщика ссылок
- 9. Qt 5.3.2/Установить минимальный размер элемента QToolBox
- 10. Как установить минимальный размер разделения Vim
- 11. Установить минимальный размер шрифта UIButton с рентабельностью
- 12. iOS dynamic type - установить минимальный размер шрифта
- 13. Минимальный размер формы заказа
- 14. Как установить минимальный размер главного окна xulrunner?
- 15. UIButton - Как установить минимальный размер шрифта?
- 16. Как установить минимальный размер для ограничения размера?
- 17. Минимальный размер загружаемого файла
- 18. html - div, минимальный размер
- 19. Установите минимальный размер окна
- 20. пользовательский вид минимальный размер
- 21. Cassandra минимальный размер кучи
- 22. Как установить размер карты OpenLayers?
- 23. Zlib минимальный размер дефлята
- 24. Плавающий QDockWidget минимальный размер
- 25. gtk минимальный размер
- 26. Создать минимальный размер массива
- 27. SCROLLVIEW минимальный размер зума
- 28. Минимальный размер сообщения DTLS
- 29. Минимальный размер файла .ts
- 30. Каков минимальный размер булева?
Использовать конструктор, который принимает начальный размер? –
Будет ли конструктор предотвращать изменение размера карты? – Stepan
Я голосую, чтобы закрыть этот вопрос не по теме, потому что ОП не проводил никаких исследований вообще.Для этой цели есть конструктор. – f1sh