Мне нужна минимальная куча в Matlab, и я пытаюсь использовать Java PriorityQueue. Я застрял на том, как поставить Компаратор.
Пока что я инициализировал 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)
Из этого сообщения я вижу, что мне нужно предоставить функцию Comparator, но я не знаю, как это сделать.