jjzjj

priorityQueue

全部标签

编辑元素时Java优先队列重新排序

我正在尝试实现Dijkstra的算法,以使用优先级队列查找最短路径。在算法的每一步中,我从优先级队列中删除距离最短的顶点,然后更新优先级队列中每个邻居的距离。现在我读到当您编辑其中的元素(确定排序的元素)时,Java中的优先级队列不会重新排序,所以我试图通过插入和删除一个虚拟顶点来强制它重新排序。但这似乎不起作用,我一直试图弄清楚。这是顶点对象和比较器的代码classvertex{intv,d;publicvertex(intnum,intdis){v=num;d=dis;}}classVertexComparatorimplementsComparator{publicintcomp

编辑元素时Java优先队列重新排序

我正在尝试实现Dijkstra的算法,以使用优先级队列查找最短路径。在算法的每一步中,我从优先级队列中删除距离最短的顶点,然后更新优先级队列中每个邻居的距离。现在我读到当您编辑其中的元素(确定排序的元素)时,Java中的优先级队列不会重新排序,所以我试图通过插入和删除一个虚拟顶点来强制它重新排序。但这似乎不起作用,我一直试图弄清楚。这是顶点对象和比较器的代码classvertex{intv,d;publicvertex(intnum,intdis){v=num;d=dis;}}classVertexComparatorimplementsComparator{publicintcomp

具有固定大小的 Java PriorityQueue

我正在计算大量可能的算法结果组合。为了对这些组合进行排序,我用双倍值对它们进行评分,并将它们存储在PriorityQueue中。目前,该队列中有大约200k个项目,这非常占用内存。实际上,我只需要说列表中所有项目中最好的1000个或100个。所以我刚开始问自己是否有办法在Java中拥有一个固定大小的优先级队列。我应该这样做:该项目是否比已存储的项目之一更好?如果是,则将其插入到相应的位置,然后将评分最低的元素扔掉。有人有想法吗?再次非常感谢!马可 最佳答案 que.add(d);if(que.size()>YOUR_LIMIT)qu

具有固定大小的 Java PriorityQueue

我正在计算大量可能的算法结果组合。为了对这些组合进行排序,我用双倍值对它们进行评分,并将它们存储在PriorityQueue中。目前,该队列中有大约200k个项目,这非常占用内存。实际上,我只需要说列表中所有项目中最好的1000个或100个。所以我刚开始问自己是否有办法在Java中拥有一个固定大小的优先级队列。我应该这样做:该项目是否比已存储的项目之一更好?如果是,则将其插入到相应的位置,然后将评分最低的元素扔掉。有人有想法吗?再次非常感谢!马可 最佳答案 que.add(d);if(que.size()>YOUR_LIMIT)qu

java - 是否有具有固定容量和自定义比较器的 PriorityQueue 实现?

相关问题:JavaPriorityQueuewithfixedsizeHowdoIuseaPriorityQueue?getindexesofnsmallestelementsinanarrayScala:IsthereawaytousePriorityQueuelikeIwouldinJava?我有一个非常大的数据集(超过500万个项目),我需要从中获取N个最大的个项目。最自然的方法是使用堆/优先队列只存储前N个项目。JVM(Scala/Java)的优先级队列有几个很好的实现,分别是:scala.collection.mutable.PriorityQueuejava.util.Pr

java - 是否有具有固定容量和自定义比较器的 PriorityQueue 实现?

相关问题:JavaPriorityQueuewithfixedsizeHowdoIuseaPriorityQueue?getindexesofnsmallestelementsinanarrayScala:IsthereawaytousePriorityQueuelikeIwouldinJava?我有一个非常大的数据集(超过500万个项目),我需要从中获取N个最大的个项目。最自然的方法是使用堆/优先队列只存储前N个项目。JVM(Scala/Java)的优先级队列有几个很好的实现,分别是:scala.collection.mutable.PriorityQueuejava.util.Pr

java - Java 的 PriorityQueue 与最小堆有何不同?

如果你不能insertWithPriority,他们为什么要命名为PriorityQueue?它看起来非常类似于堆。有什么不同吗?如果没有区别,那为什么叫PriorityQueue而不是Heap? 最佳答案 默认的PriorityQueue是用Min-Heap实现的,即顶部元素是堆中最小的元素。为了实现最大堆,您可以创建自己的比较器:importjava.util.Comparator;publicclassMyComparatorimplementsComparator{publicintcompare(Integerx,Inte

java - Java 的 PriorityQueue 与最小堆有何不同?

如果你不能insertWithPriority,他们为什么要命名为PriorityQueue?它看起来非常类似于堆。有什么不同吗?如果没有区别,那为什么叫PriorityQueue而不是Heap? 最佳答案 默认的PriorityQueue是用Min-Heap实现的,即顶部元素是堆中最小的元素。为了实现最大堆,您可以创建自己的比较器:importjava.util.Comparator;publicclassMyComparatorimplementsComparator{publicintcompare(Integerx,Inte

java - Android 如何使用 PriorityQueue 读取多个 BLE 特征

有点卡在这里,可能需要你的帮助。我想一次读取多个BLE特性,有些人建议为此使用PriorityQueue。我已经知道所有的uuid等。只需要一种方法来一次读取多个。谁能解释一下它到底应该是什么样子?或者也许还有另一种更简单的解决方案?提前致谢,这是我的代码:publicstaticfinalBluetoothGattCallbackmGattCallback=newBluetoothGattCallback(){PriorityQueuequeue=newPriorityQueue();//Whenconnectionstatechanges@OverridepublicvoidonC

java - PriorityQueue 有相同优先级的对象

我正在使用优先级队列对大量自定义对象进行排序和使用。这些对象有一个“重量”,这是它们的自然顺序。但是,插入到优先级队列中的不同对象可能具有相同的“权重”。在这种情况下,我希望优先队列按照它们放入队列的顺序对它们进行排序。例如,如果我按顺序添加CustomObjectsA、B、C、D,所有对象都具有相同的“权重”,那么优先级队列也应该按该顺序返回它们——即使我轮询一个或多个在添加其他对象之前的对象。这是我的自定义对象的CompareTo:publicintcompareTo(CustomObjecto){intthisWeight=this.weight;intthatWeight=o.