2015-01-20 3 views
0

Я создаю систему, в которой у каждого пользователя есть некоторые контакты (например, адресная книга, в основном адресная книга телефона). Например, .Сообщать об этом друзьям

Сказать пользователю A в его контактах [X, Y, Z].

Пользователь B имеет [M, N, O, X] контакты и C имеет [D, X, E, F] контакты.

На данный момент A, B и C уже зарегистрированы.

Теперь, когда пользователь X регистрирует к моей системе, я хочу A, B и C, чтобы получить уведомление.

Наивным подходом к этому было бы линейное перемещение списка друзей каждого пользователя и посмотреть, какой пользователь имеет X в своем списке друзей. Но в больших масштабах этот подход окажется слишком дорогостоящим.

Так что мой вопрос, вы можете думать о эффективном способе, через который я могу знать A, B и C имеют X как контакт?

P.S. Все идентификаторы пользователя A, B, X и т. Д. Являются номерами телефонов.

+0

Как может A иметь X в качестве друга до регистрации X? – FlyingPiMonster

+2

Прямо сейчас у вас есть карта от пользователя к контактам. Можете ли вы сделать обратную карту от контактов к пользователям? Это будет интенсивным с точки зрения памяти, но должно работать. – templatetypedef

ответ

2

Вы уже где-то сохраняете телефонные номера и контакты. Не должно быть слишком сложно создать базу данных пользователей незарегистрированных пользователей. Затем вы можете просто найти их по номеру телефона и уведомить своих друзей, когда они регистрируются (и удаляют их записи). Если добавляет х к своим контактам и х не является зарегистрированным пользователем, добавьте запись к х «s в незарегистрированных базах данных пользователей.

Смежные вопросы