我需要使用PriorityQueue
来对FIFO元素进行排序。该队列将包含一个Message对象,其中每个对象将有一个double timestamp
以及一个int counter
,该对象跟踪该消息已收到多少确认。 有两种类型的消息 - 一种具有数据,另一种具有确认。只有带有数据的消息才会放入队列中。我正在编写一个比较器,用于对队列进行排序。只有收到所有确认信息,我才会弹出唯一的队列头。检查PriorityQueue中对象的字段
的问题是,作为确认消息到来时,我需要递增针对其接收该确认消息的确认计数器。为此,我需要通过检查队列中每条消息的特定字段(发送时间)来查找消息。
这怎么办?我认为以下几点:
获得一个迭代器,然后遍历队列检查每个对象的特定领域。
这似乎对我来说虽然残酷的方法。有没有更好的方法?我们可以像这样访问一个队列中的对象吗?
注:我需要使用时Queue,因为我实现(在分布式系统中使用兰波特的逻辑时钟总订购多播)的功能需要有一个有序的队列。如果未由每个节点确认,则无法将队列头部的消息传递到应用程序线程。另外,即使收到所有确认,我也无法传递不在队列头部的消息。
我需要使用PriorityQueue,因为我正在实现的功能(使用Lamport逻辑时钟的分布式系统中的全部有序多播)需要有一个有序队列。如果未由每个节点确认,则无法将队列头部的消息传递到应用程序线程。另外,即使收到所有确认,我也无法传递不在队列头部的消息。 – aoak 2013-03-18 22:27:37