Как комбинировать хеш-таблицы?
Массивы и структуры данных
Хеш-таблицы комбинируют для сложных задач: вложенные Map/объекты (многоуровневые ключи), Map значений-массивов (группировка), составные ключи, комбинация с Set. Дают эффективный O(1) доступ к структурированным данным.
Способы комбинирования
Вложенные хеш-таблицы (многоуровневые ключи)
Map внутри Map — для двумерного доступа:
const grid = new Map();
grid.set('row1', new Map([['col1', 'A']]));
grid.get('row1').get('col1'); // 'A'Для матриц, кешей по нескольким ключам.
Map со значениями-массивами (группировка)
Группировка элементов по ключу:
const byRole = new Map();
for (const user of users) {
if (!byRole.has(user.role)) byRole.set(user.role, []);
byRole.get(user.role).push(user);
}
// byRole: { admin: [...], user: [...] }Map + Set (уникальные связи)
Значение — Set для уникальности:
const followers = new Map(); // userId → Set подписчиков
followers.set(1, new Set([2, 3]));Графы, отношения многие-ко-многим.
Составные ключи
Ключ из нескольких значений (строкой или через вложенность):
const cache = new Map();
cache.set(`${x},${y}`, value); // ключ из координатИндексы (несколько Map)
Одни данные, разные индексы для O(1) поиска:
const byId = new Map(); // id → объект
const byEmail = new Map(); // email → объектЗачем
- O(1) доступ к структурированным данным.
- Замена вложенных циклов (O(n²) → O(n)).
- Группировка, индексация, отношения.
Коротко для собеседования
Хеш-таблицы комбинируют: вложенные Map (многоуровневые ключи — матрицы, кеши), Map со значениями-массивами (группировка по ключу), Map + Set (уникальные связи — графы), составные ключи (${x},${y}), несколько Map как индексы (byId, byEmail — O(1) поиск по разным полям). Дают эффективный O(1) доступ к структурированным данным вместо вложенных циклов.