Подскажите, пожалуйста, о самом быстром и эффективном способе сравнения большого набора значений. Как будто есть список родительских кодов (строка), и каждый код имеет ряд дочерних значений (строка). Дочерние списки должны сравниваться друг с другом, выявлять дубликаты и подсчитывать, сколько раз они повторяются.
code1(code1_value1, code1_value2, code3_value3, ..., code1_valueN);
code2(code2_value1, code1_value2, code2_value3, ..., code2_valueN);
code3(code2_value1, code3_value2, code3_value3, ..., code3_valueN);
.
.
.
codeN(codeN_value1, codeN_value2, codeN_value3, ..., codeN_valueN);
Списки огромны, скажем, есть 100 родительских кодов, в каждом из которых около 250 значений. В списке кодов не будет дубликатов. Делая это в Java, и решение, которое я мог бы выяснить, это.
- Сохранить значения первого набора кода как
codeMap.put(codeValue, duplicateCount)
. Счет инициализирован до 0.
- Затем сравните остальные значения с этим. Если его на карте, увеличьте счет, в противном случае добавьте его на карту.
Падением этого является получение дубликатов. Другая итерация должна быть выполнена для очень большого списка.
Альтернативой является сохранение другой хэш-карты для дубликатов, такой как duplicateCodeMap.put(codeValue, duplicateCount)
, и изменение исходного хеш-карты на codeMap.put(codeValue, codeValue)
.
Скорость - это то, что является требованием. Надеюсь, один из вас может помочь мне с этим.