У меня есть два очень больших списка строк, один из которых содержит несколько идентификаторов (более 70 тыс.) И еще один список, содержащий некоторые сообщения String, каждая строка содержит идентификатор (более 400 тыс. Записей). Мне нужно, чтобы каждый идентификатор из первого списка получал все сообщения с одинаковым идентификатором из второго списка. Я попытался создать несколько потоков, для каждого идентификатора из первого списка, итерации всего второго списка и извлечения & удалите это сообщение. Кажется, это создает слишком много объектов Iterator, в результате чего OOM не хватает памяти. Кроме того, при повторении второго списка CPU составляет 100%. Какие-либо предложения? Я могу изменить реализацию, а также контейнеры, в которых хранятся сообщения.Эффективный способ сопоставления двух идентификаторов из двух очень длинных контейнеров
Спасибо.
while (condition) {
<Message> iterator = msgQueue.iterator();
while (iterator.hasNext()) {
Message message = iterator.next();
if (filter.filter(message)) {
iterator.remove();
}
}
}