Я просто пытаюсь вставить некоторые объекты класса в очередь приоритетов в java. Но получение ошибки «com.java.split.MyComp не может быть передано в java.util.Collection». Я пробовал разные варианты, передав другой параметр, чтобы,класс не может отличить от java.util.collection Exception
PriorityQueue<Node> serverLog = new PriorityQueue<Node>();
Код:
импорт java.util.Comparator; импорт java.util.PriorityQueue;
public class Split {
public static void main(String args[])
{
Comparator comparator = new MyComp();
PriorityQueue<Node> serverLog = new PriorityQueue<Node>();
Node n1 = new Node(1,"one");
serverLog.add(n1);
Node n2 = new Node(1,"two");
serverLog.add(n2); <== Error Here (line 22)
Node n3= new Node(1, "three");
serverLog.add(n3);
}
}
public class Node {
private long timeStamp;
private String log;
public Node(long timeStamp, String log)
{
this.timeStamp = timeStamp;
this.log = log;
}
//getter and setter
}
public class MyComp implements Comparator {
@Override
public int compare(Object a, Object b) {
long aTimeStamp = ((Node) a).getTimeStamp();
long bTimeStamp = ((Node) b).getTimeStamp();
if(aTimeStamp == bTimeStamp)
return 0;
else if (aTimeStamp < bTimeStamp)
return 1;
else
return -1;
}
}
но не работает. Я получаю исключение,
Исключение в потоке «главный» java.lang.ClassCastException: com.java.split.Node не может быть приведен к java.lang.Comparable на java.util.PriorityQueue.siftUpComparable (Unknown Source) в java.util.PriorityQueue.siftUp (Unknown Source) в java.util.PriorityQueue.offer (Unknown Source) в java.util.PriorityQueue.add (Unknown Source) в com.java.split.Split. main (Split.java:19)
Было много сообщений, предлагающих реализовать метод сравнения компаратора и переопределить, но я не смог его исправить. Я не знаю количество объектов, которые я собираюсь вставить. любезно предложить, что можно сделать, чтобы сделать эту работу?
спасибо !! -Bala
Какая строка линии 41? –
Извините, я изменил код и удалил несколько нежелательных строк печати. ошибка ссылается на этот оператор PriorityQueue serverLog = new PriorityQueue (); –
Покажите нам точный код, который вы используете, точное сообщение об ошибке, и сообщите нам, к какой строке он относится. Ваш код не скомпилирован: myComp! = MyComp –