Есть ли какая-либо вещь hashmap, может сделать, но карта не может?

Я только знаю, что различие между hashmap и картой - то, что hashmap реализован с хеш-функцией, но карта реализована с деревом. Какое-либо тело могло добавить что-нибудь больше?

На основе этого, там какая-либо вещь hashmap, может сделать, но карта не может?

5
задан Peter Alexander 30 March 2010 в 18:14
поделиться

3 ответа

  • Хэш-карты имеют в среднем лучшую производительность для доступа (O (1)), но худшая производительность в худшем случае (O (n)). Карты всегда O (lg (n)).

  • Карты упорядочены по ключу, хэш-карты - нет.

  • Хэш-карты обычно используют больше памяти, чем карты.

  • Карты обычно позволяют ускорить итерацию.

  • Хорошие хеш-функции сложнее написать, чем хорошие функции упорядочивания (и их труднее анализировать).

Я не верю, что есть что-то, что может сделать хэш-карта, чего не может сделать карта.

10
ответ дан 18 December 2019 в 14:44
поделиться

Карта требует, чтобы ключ имел строгий слабый порядок, который, возможно, может не существовать. Для хэш-карты нужна только хеш-функция. Таким образом, хэш-карта может использоваться с ключами, которые не имеют строгого слабого порядка.

3
ответ дан 18 December 2019 в 14:44
поделиться

Одно из преимуществ хэш-карт по сравнению с деревьями заключается в том, что в многопоточной среде вам не нужно блокировать весь контейнер, чтобы добавить или удалить единственный ключ - блокировка единственной релевантной записи в хеш-таблице (почти ) достаточно.

Почти потому, что могут быть обновлены метаданные (например, количество элементов в хеш-таблице). И, конечно, вам, вероятно, потребуется заблокировать всю таблицу, чтобы увеличить или уменьшить ее.

0
ответ дан 18 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: