我需要在Matlab中分鐘堆,我試圖使用Java的PriorityQueue。我被困在如何提供比較器。 到目前爲止,我已經初始化時Queue和可以添加一個價值指數對吧:在Matlab中使用Java的PriorityQueue
>> q = java.util.PriorityQueue
q =
[]
>> q.add({1,3})
ans =
1
,當我試圖添加更多的數據,會出現問題:
>> q.add({2,4})
??? Java exception occurred:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Comparable
at java.util.PriorityQueue.siftUpComparable(Unknown Source)
at java.util.PriorityQueue.siftUp(Unknown Source)
at java.util.PriorityQueue.offer(Unknown Source)
at java.util.PriorityQueue.add(Unknown Source)
從this後,我見我需要提供一個比較器功能,但我不知道如何做到這一點。
我懷疑你必須在Java中編寫比較函數並分別進行編譯。 – nibot 2011-03-28 04:43:57
是的,它看起來就是這樣做的方式。我並不是那麼流利的Java,所以我尋找其他解決方案,並在文件交換中找到了一個條目(http://www.mathworks.com/matlabcentral/fileexchange/24238-priority-queue-mexc)我需要,儘管如果嘗試從空隊列中推送某些東西,它會非常不合時宜地崩潰。 – MatlabSorter 2011-03-28 19:34:49