Hashmap, hashtable, map или любой другой метод - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу сравнить два значения (например, больше или меньше, чем у других) в HashMap, Hashtable, Map или любых других типах Array. Не могли бы вы помочь мне в этом.

1 Ответ

0 голосов
/ 06 апреля 2020

Вот некоторые факторы, которые могут повлиять на выбор структуры данных:

  • Какова цель сравнения?

  • Что тип данных вы сравниваете?

  • Как часто данные будут вставляться в эту структуру данных?

  • Как часто данные будут выбираться из этой структуры данных?

Когда следует использовать HashMap?

Следует использовать HashMap, когда их основными требованиями являются получение или изменение данных только на основе ключа. Например, в веб-приложениях имя пользователя хранится в виде ключа, а данные пользователя хранятся в виде значения в HashMap для более быстрого поиска пользовательских данных, соответствующих имени пользователя.

HashMap

Когда следует использовать HashTable?

Вход не может быть хэширован (например, вы получили двоичные двоичные объекты и не знаете, какие биты там значительны, но у вас есть функция int cmp (const T &, const T &), которую вы можете использовать для std :: map), или

доступные / возможные функции ha sh очень склонность к столкновениям, или

, которую вы хотите избежать наихудших падений производительности для:

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

изменив размер таблицы ha sh: если не указано, что она достаточно велика (что может быть расточительным и медленным при чрезмерном использовании памяти), большинство реализаций перерастет массивы, которые они используя для хеш-таблицы время от времени выделяйте больший массив и копируйте содержимое: это может привести к тому, что указанные вставки c, которые приводят к тому, что перефразирование будет намного медленнее, чем нормальное поведение O (1), даже если среднее значение все еще равно O (1) ); если вам нужно более последовательное поведение во всех случаях, то что-то вроде двоичного дерева баланса может служить

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

HashTable

...