【发布时间】:2012-03-20 20:22:46
【问题描述】:
我有两个非常大的字符串列表,一个包含一些 ID(超过 70k),另一个列表包含一些字符串消息,每行包含一个 ID(超过 400k 个条目)。我需要为第一个列表中的每个 ID 获取第二个列表中具有相同 ID 的所有消息。我尝试通过为第一个列表中的每个 ID 创建一些线程,迭代整个第二个列表并检索和删除消息。这似乎创建了太多的 Iterator 对象,导致 OOM 中没有给出足够的内存。此外,在迭代第二个列表时,CPU 为 100%。有什么建议?我可以更改实现,也可以更改我保存消息的容器。
谢谢。
while (condition) {
<Message> iterator = msgQueue.iterator();
while (iterator.hasNext()) {
Message message = iterator.next();
if (filter.filter(message)) {
iterator.remove();
}
}
}
【问题讨论】:
标签: java string algorithm list