我有一个阻塞优先级队列,它存储消息类型的对象,消息具有字符串 [] 数据 = 新字符串 [10]。现在我必须遍历整个阻塞队列,检查它的对象消息的第二个元素是否等于传入消息的第六个元素。
Messages 的比较器不是基于需要更新的第 6 个元素。问题是,如果我取出一个对象,那么如何将它放在同一位置,如果我使用下面的代码更新它,那么无论何时运行 iter.next(),它都可能开始指向下一个对象。
这是我正在尝试的。
public synchronized void updateAck(Message ackMessage)
{
Iterator iter = localQ.iterator(); // localQ is the blocking priority queue here
while(iter.hasNext())
{
if(((Message)iter.next()).data[2].equalsIgnoreCase(ackMessage.data[6]))
{
(Integer.parseInt((Message)iter.next()).data[6])+1);
}
}
}