Java 如果在优先级队列中,两个元素具有相同的值,并且它们是头,并且调用queue.poll()会发生什么情况?
我的优先级队列正在删除2个事件,但不调用与这2个事件对应的2个函数 我定义了一个函数来检查队列大小和队列内容,它确实在删除这两个事件Java 如果在优先级队列中,两个元素具有相同的值,并且它们是头,并且调用queue.poll()会发生什么情况?,java,Java,我的优先级队列正在删除2个事件,但不调用与这2个事件对应的2个函数 我定义了一个函数来检查队列大小和队列内容,它确实在删除这两个事件 PriorityQueue<Event> queue; public EventQueue() { queue = new PriorityQueue<Event>(new EventComparator()); } public void addEvent(Event event) { queue.add(event)
PriorityQueue<Event> queue;
public EventQueue()
{
queue = new PriorityQueue<Event>(new EventComparator());
}
public void addEvent(Event event)
{
queue.add(event);
}
public void processEvents()
{
while(queue.isEmpty() == false && queue.peek().getEventTime() <= Clock.getCurrentTime())
{
Event event = queue.poll();
event.getProcessingElement().handleEvent(event);
}
}
public int getQueueSize()
{
return queue.size();
}
public void displayQtimes()
{
Object[] arr = queue.toArray();
for (int j = 0; j < arr.length; j++)
System.out.print(arr[j]+" ");
System.out.println();
}
PriorityQueue队列;
公共事件队列()
{
queue=newpriorityqueue(neweventcomparator());
}
公共无效事件(事件)
{
添加(事件);
}
public void processEvents()
{
虽然(queue.isEmpty()==false&&queue.peek().getEventTime()我想你自己已经解决了,一个队列只能有一个头部;在平局的情况下,只有一个可以“赢”。没错,它应该先删除一个头,然后再删除第二个头。它正在这样做。但是第二个头的函数没有被调用@ElliottFrisch使用优先级队列的方式没有问题。我们可以看到Event
类的代码,特别是getProcessingElement()
和handleEvent(Event)的代码吗
方法是什么?