我需要使用PriorityQueue
來對FIFO元素進行排序。該隊列將包含一個Message對象,其中每個對象將有一個double timestamp
以及一個int counter
,該對象跟蹤該消息已收到多少確認。 有兩種類型的消息 - 一種具有數據,另一種具有確認。只有帶有數據的消息纔會放入隊列中。我正在編寫一個比較器,用於對隊列進行排序。只有收到所有確認信息,我纔會彈出唯一的隊列頭。檢查PriorityQueue中對象的字段
的問題是,作爲確認消息到來時,我需要遞增針對其接收該確認消息的確認計數器。爲此,我需要通過檢查隊列中每條消息的特定字段(發送時間)來查找消息。
這怎麼辦?我認爲以下幾點:
獲得一個迭代器,然後遍歷隊列檢查每個對象的特定領域。
這似乎對我來說雖然殘酷的方法。有沒有更好的方法?我們可以像這樣訪問一個隊列中的對象嗎?
注:我需要使用時Queue,因爲我實現(在分佈式系統中使用蘭波特的邏輯時鐘總訂購多播)的功能需要有一個有序的隊列。如果未由每個節點確認,則無法將隊列頭部的消息傳遞到應用程序線程。另外,即使收到所有確認,我也無法傳遞不在隊列頭部的消息。
我需要使用PriorityQueue,因爲我正在實現的功能(使用Lamport邏輯時鐘的分佈式系統中的全部有序多播)需要有一個有序隊列。如果未由每個節點確認,則無法將隊列頭部的消息傳遞到應用程序線程。另外,即使收到所有確認,我也無法傳遞不在隊列頭部的消息。 – aoak 2013-03-18 22:27:37