Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果在优先级队列中,两个元素具有相同的值,并且它们是头,并且调用queue.poll()会发生什么情况?_Java - Fatal编程技术网

Java 如果在优先级队列中,两个元素具有相同的值,并且它们是头,并且调用queue.poll()会发生什么情况?

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)

我的优先级队列正在删除2个事件,但不调用与这2个事件对应的2个函数

我定义了一个函数来检查队列大小和队列内容,它确实在删除这两个事件

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)的代码吗
方法是什么?