Алгоритмическая задача на поиск по составному ключу

Добрый день.

Пока писал проект возник вопрос, который можно решить массой способов и в принципе любой прокатит, поскольку объем данных невелик, но всё же есть ощущение, что мне не хватает знаний по алгоритмам.

Имеем приблизительно задачку такого плана. Есть два пользователя. Один приглашает второго на сеанс связи. Второй получает уведомление об этом, на которое он может ответить в течении скажем 1 минуты. С другой стороны, второй пользователь может сделать встречный вызов и он будет иметь такой же результат, как согласие.

Что имеется тогда.
user1.id, user2.id и временная метка в момент инициации инвайта, назовём time.

Нужно иметь возможность сделать поиск по user1.id И user2.id вне зависимости от порядка этих аргументов. Первое что приходит на ум это нечто вроде ключа, значение которого формируется из user1.id + user2.id, не завися от порядка слагаемых. Если сделать побитовое сложение значений id, то вроде всё круто получится, но есть риск получить коллизию. Проверить актуальность предложения далее уже тривиально, взяв значение из массива по найденному ключу.

Я знаю, что это можно решить через два массива или даже БД, но это не интересно.
Можно сделать символьное сложение идентификаторов с разделителем и перебирать на каждой итерации два варианта для сравнения, но неужели лучше решения нет?
  • Вопрос задан
  • 2632 просмотра
Решения вопроса 1
AloneCoder
@AloneCoder
[object Object]
Сделать одним полем ключ конкатенации массива userId1 и userId2 предварительно их отсортировав по алфавиту ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы