2014-10-14 2 views
0

У меня есть список объектов со списком размером 500K. Каждый объект в списке имеет уникальный идентификатор. Я хочу проверить список для любых повторяющихся объектов (с тем же идентификатором) и пометить их флагом. Поскольку в списке много элементов, обработка занимает довольно много времени, и я не могу достичь в течение выделенного временного интервала.Параллельная обработка списка в java

Есть ли способ обрабатывать список параллельно (с использованием java Future/Callable)?

Заранее благодарен. Mayuran

+1

Если * идентификатор * является единственным критерием для равных двух объектов, то почему бы вам не переопределить 'equals()' и 'hashCode()' и использовать 'Set'? – TheLostMind

+1

Взгляните на параллельные потоки Java8. – Justin

+0

Разделите кусок на мелкие кусочки и обработайте его –

ответ

3

Я не знаю, какое у вас определение долгого времени, но объект 500K - это не много. Скорее всего, ваш алгоритм довольно неэффективен. Вместо того, чтобы полагаться на параллелизацию (как бы вы все равно это распараллеливали?), Рассмотрите возможность использования лучшей структуры данных/алгоритма для этого.

HashMap или HashSet должно работать достаточно хорошо для этого.

+0

Нет, если ключевым моментом является «отметить их [дубликатов] флагом». – hiergiltdiestfu

+0

Спасибо, но каждый объект должен пройти через множество сценариев проверки. Поэтому проверка для каждого объекта занимает некоторое время. Так что я хочу обрабатывать параллельно – Mayuran

+1

@Mayuran: Это не то, о чем говорят ваши вопросы. Тогда вы, возможно, захотите поработать над улучшением ясности вопроса. – NPE

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