2010-05-21 97 views
0

我可以使用Collections.binarySearch()方法來搜索PriorityQueue中的元素嗎?否則,我該如何將搜索算法應用於PriorityQueue?Java - Collections.binarySearch with PriorityQueue?

我有這個(類事件摘要實現可比):

public class PriorityQueueCAP extends PriorityQueue<Evento>{ 

     // (...) 

     public void removeEventos(Evento evento){ 

      Collections.binarySearch(this, evento); // ERROR! 

     } 
    } 

而且我得到了這個錯誤:在類型集合「的方法的binarySearch(名單>,T)是不適用的參數(PriorityQueueCAP,事件)「

爲什麼?

在此先感謝!

回答

4

您不應該將搜索算法應用於優先級隊列。優先級隊列旨在提供對集合中最高優先級元素的有效訪問,這就是全部。

我知道這可能不是你所希望的答案;我發現使用工具出現意想不到的目的出現了太多問題,並且覺得我應該提供一個警告。

+0

「優先級隊列旨在提供對集合中最高優先級元素的有效訪問」。我用它來達到這個目的。不過,我也需要以有效的方式找到元素。我怎麼能做到這一點? – msr 2010-05-21 22:15:12

+0

搜索堆的最有效方法是對其迭代器返回的每個元素進行O(n)檢查。 – erickson 2010-05-21 22:28:44

+0

這就是我正在使用的。但似乎需要很長時間,因爲我必須這麼做,優先隊列的大小約爲5000(或更大)。 – msr 2010-05-21 22:42:19

0

tutorial向您展示瞭如何啓動一個集合以及您可以對其執行的可能操作。你應該記住埃裏克森所說的。