В JavaScript объекты хранятся в виде пар ключ-значение. Это пример встроенной хеш-таблицы в самом языке. Если вы хотите настроить хеш-таблицу и создать свою собственную, вы можете это сделать. Хэш-таблицы могут быть реализованы в виде линейной или нелинейной структуры данных. В большинстве случаев они реализуются как линейная структура данных.

Прежде чем мы начнем с хеш-таблицы, давайте разберемся в вопросе ниже.

что такое ассоциативный массив, хэширование и коллизия?

Ассоциативные массивы — это объекты JS, которые хранят объекты как уникальные определяемые пользователем ключи. Когда сопоставление объектов происходит таким образом, оно называется "Хэширование". Хеширование всегда возвращает пары ключ-значение.

Конфликт – это когда два элемента сопоставляются с одним и тем же местом в памяти.

Обработка столкновений:

Столкновения могут быть обработаны следующими способами

Линейное зондирование:

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

Отдельная цепочка:

Мы можем хранить элементы отдельно, чтобы избежать коллизий, используя цепочку либо с массивами, либо со связанными списками.

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

Вывод:

Наконец, поиск по ключу или значению и вставка элемента в хеш-таблицу занимает большое O(1). Производительность хеш-таблицы зависит от хэш-функции, размера таблицы и выбора метода обработки коллизий.

В этой статье мы рассмотрели серию структур данных JavaScript. Вот остальные статьи из этой серии, если хотите прочитать.

Другие связанные статьи:

Большая нотация О — что это за штука?

  1. Соединение точек — большая буква «О и структура массива данных»
  2. Соединение точек — большая буква «О и структура данных связанного списка»
  3. Соединяя точки — Big O и Trees Data Structure
  4. Соединяем точки — Big O и Stacks Data Structure
  5. Соединение точек — большое O и структура данных очереди
  6. Соединение точек — большая буква «О и структура графических данных»
  7. Эта статья: Соединение точек — большая буква О и структура данных хеш-таблицы

Надеюсь, вам понравилась серия статей о структуре данных JavaScript. Скоро я опубликую новые статьи. Оставайтесь с нами.

Спасибо за чтение этой статьи и, пожалуйста, подпишитесь на меня и поставьте 👏.

Ссылки:

Википедия, Алгоритмы Grokking, Шпаргалка Big O, Interview.io