Итак, в этом приложении для Android у меня есть два списка с номерами телефонов. Я хочу узнать общие числа в обоих. Метод грубой силы равен N^2. Я не могу использовать HashSets
(я думаю), потому что числа могут быть в разных форматах. Поэтому лучше всего использовать PhoneNumberUtils.compare
. (Он соответствует номерам разных форматов, например, возвращает true для «+91 9413294132» и «09413294132».Найдите общие элементы из двух списков (с PhoneNumberUtils.compare)
Я хочу эффективный способ, поскольку списки слишком велики. Я хочу узнать, какие номера зарегистрированы в моей базе данных (может быть, так же, как WhatsApp узнает, кто на WhatsApp). Я буду очень благодарен за любые усилия.
Можете ли вы обрабатывать оба списка в памяти? – Seelenvirtuose
Опишите, что вы подразумеваете под «слишком большими списками»? Обычный список с номерами телефонов будет иметь примерно 500 контактов? 1000 контактов? Огромным я понимаю, по крайней мере,> 1 000 000. Имея алгоритм N^2 для 2 списков из 500-1000 элементов, не является **, что ** плохо – Daniel
Более или менее ... есть сложная вещь, доступ к контексту, но u может обрабатывать, я думаю. '\t \t личный класс MyNumber реализует сопоставимые { \t \t String val; \t \t @Override \t \t общественности INT CompareTo (arg0 Object) { \t \t \t возвращение PhoneNumberUtils.compare (контекст, вал, ((MyNumber) arg0) .val)?0: 1; \t \t} \t \t \t } \t государственной статической силы основных (String [] арг) { \t \t Set SET1 = новый HashSet (); \t \t // Заполните список! \t \t \t} ' –
eduyayo