我对Java中优先级队列初始容量的使用感到困惑。如官方文档所示,有一个以初始容量为参数的构造函数。但是当我用构造函数指定初始容量并开始将整数放入其中时,优先级队列的大小会大于初始容量。
例如,我将一个PQ的初始容量指定为3,并将10个不同的数字放入其中,这样我就可以得到第三个最小的数字,但结果发现那个队列中有10个数字。要处理这一点,我总是要手动移除一些数字,所以我想知道初始容量是如何工作的,或者在哪种情况下我应该使用初始容量。
优先级队列由某种数据结构--特别是一个数组--作为后盾。初始容量是指这个数组最初有多大。
文档中对此进行了描述:
优先级队列是无界的,但它有一个内部容量来控制用于存储队列中元素的数组的大小。它总是至少和队列大小一样大。当元素被添加到优先级队列中时,它的容量会自动增长。
注意:我知道可以用比较器创建优先级队列,然后重复调用Add。
我需要一个优先级队列,它首先获得具有最高优先级值的项目。我当前正在使用队列库中的PriorityQueue类。但是,这个函数只先返回值最小的项。我尝试了一些很难看的解决方案,比如(sys.maxint-priority)作为优先级,但我只是想知道是否存在更优雅的解决方案。
我所拥有的是一个类,它创建了一个具有优先级、到达时间和完成时间的对象。我还有许多优先级队列可以将它们放入其中。当我开始时,我将它们放入到达队列中,对它们进行排序,然后查看哪个第一个进入,并将其放入队列中。但是,当我尝试向到达队列添加第二个队列时,它会失败并抛出一个异常。我首先要做的是将所有进程添加到到达队列中,然后对它们进行排序,这样到达时间最短的进程将是到达队列中第一个进入队列的进程。谢谢你帮忙
我试图实现Dijkstra算法的一个版本,以找到公共汽车从起点到终点的最短路线。不幸的是,我似乎找不到swift提供优先级队列类型的库或其他方式,所以我似乎必须自己编写代码。 话虽如此,有人能指出我做这件事的正确方向吗? 目前我的想法如下: 到目前为止这是我的代码。似乎太短太残忍了...我一定是在概念上漏掉了什么。
我有一个,名为,其中包含类型的对象。 您可以在所有车辆上调用该方法。 我要做的是排序,这样车辆被赋予更高的优先级,并被放在队列的前面。 我假设我必须在这里使用一个比较器,但不知道怎么做。