Я постараюсь описать мою проблему как можно лучше, но, пожалуйста, спросите, есть ли вещи, которые не имеют смысла.
- У меня есть конечное число списков
- Каждый список содержит конечное количество контактов
- Каждый контакт представлен в виде HashMap
- Каждый список связан с провайдером
- Один и тот же контакт может присутствовать в нескольких провайдерах (и, следовательно, в нескольких списках).
- Мне нужен «основной» список, который содержит все уникальные записи в других списках
Я ищу эффективный способ объединения этих списков в основной список без дубликатов. Например, если один и тот же контакт появляется в нескольких списках (несколько HashMaps, соответствующих одному и тому же физическому лицу), я хочу объединить все HashMaps в один и поместить объединенный HashMap в основной список. Простая «перестановка» здесь не годится, поскольку мне нужно повторно набрать содержимое для эффективного доступа к ним (например, один провайдер дает мне список адресов электронной почты, помеченных как «электронные письма», а провайдер 2 дает мне ту же информацию, что и 'адресов электронной').
Объединение отдельных HashMaps является одной из двух проблем, поскольку я знаю эти ключи и могу легко их объединить.
Проблема, из-за которой я почесал голову, заключается в эффективном сканировании списков ... нет ли другого способа, кроме линейного прохождения каждого списка во вложенном цикле, захвата следующего HashMap, проверки, существует ли он уже в списке mater? и слияние / создание нового ...?