Задать вопрос
@Alex_87

Как реализовать свой класс мап, имитируя поведение стандартной хэш-мапы?

Добрый вечер! Прошу помочь! Нужно создать свою реализацию класса мап, имитируя поведение стандартной хэш-мапы.
Цитирую задание: Реализовать класс, хэш функцию, которая хэширует и четыре метода
- Добавление пары ключ-значение.
- Удаление пары ключ-значение.
- Получение значения по ключу.
- Очистка всей структуры данных.

Исходный код:
class Map {
  constructor() {
    // Инициализация структуры
  }

  // Методы для работы с данными...
}

// Пример добавления данных
let weatherMap = new Map();
weatherMap.add('London', 20);
weatherMap.add('Berlin', 25);
// Пример получения данных
console.log(weatherMap.get('London')); // Выведет 20


Небольшая схемка:
66a27974ef582656889343.png

ВОПРОСЫ
1) Не понятно, что конкретно должна делать hash функция
2) Какой тип использовать у buckets

Может ко-то читал хорошую статью, которая может помочь в реализации

P.S. Обучение по классам, генерики к этому моменту ещё не проходили
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Для начала стоит почитать про устройство хэш таблиц:
https://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D1%88-%...
https://habr.com/ru/articles/509220/
Куча вопросов сразу отпадёт.
Классическая структура данных кстати, полезно знать не зависимо от ЯП.

1) Не понятно, что конкретно должна делать hash функция
Вычисляет хэш от ключа. Остаток от деления хэша на длину массива - это индекс бакета, в котором будет хранится пара ключ-значение.

2) Какой тип использовать у buckets
Как вариант такой:type Buckets<K, V> = ([K, V] | undefined)[];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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