【发布时间】:2014-12-16 05:26:13
【问题描述】:
我有这样的数据结构:
BlockingQueue 邮箱 = new LinkedBlockingQueue();
我正在尝试这样做:
for(Mail mail: mailbox)
{
if(badNews(mail))
{
mailbox.remove(mail);
}
}
显然循环的内容会干扰边界并触发错误,所以我通常会这样做:
for(int i = 0; i < mailbox.size(); i++)
{
if(badNews(mailbox.get(i)))
{
mailbox.remove(i);
i--;
}
}
但遗憾的是,BlockingQueue 没有按索引获取或删除元素的功能,所以我被卡住了。有什么想法吗?
编辑 - 一些澄清: 我的目标之一是保持相同的顺序,因此从头部弹出并将其放回尾部是不好的。另外,虽然没有其他线程会从邮箱中删除邮件,但他们会添加到邮箱中,所以我不想在删除算法的中间,有人给我发邮件,然后发生异常。 em>
提前致谢!
【问题讨论】:
-
检查我发布的答案..
标签: java loops blockingqueue