Java 优先级队列是否适用于这种情况?
我有一个类,它只不过是一对Java 优先级队列是否适用于这种情况?,java,collections,priority-queue,Java,Collections,Priority Queue,我有一个类,它只不过是一对(double,int)。我需要保留这些对象的两个集合,它们都按双精度排序,一个按升序排序,另一个按降序排序 例如: asc: [(4.0, 10), (4.5, 8), (5.2, 13), (6.0, 1)] des: [(32.0, 20), (27.5, 2), (13.65, 4), (6.0, 100)] 主要的使用模式将是: 客户带着一对(d,i)进入 就d而言,检查其中一个集合的头部(取决于客户)是否比给定的一对更低(或更高) 如果存在,则根据i的值将
(double,int)
。我需要保留这些对象的两个集合,它们都按双精度排序,一个按升序排序,另一个按降序排序
例如:
asc: [(4.0, 10), (4.5, 8), (5.2, 13), (6.0, 1)]
des: [(32.0, 20), (27.5, 2), (13.65, 4), (6.0, 100)]
主要的使用模式将是:
(d,i)
进入李>
d
而言,检查其中一个集合的头部(取决于客户)是否比给定的一对更低(或更高)李>
i
的值将其删除或执行一些计算李>
- 按顺序插入李>
- 取头李>
- 取下头部
asc: [(4.0, 10), (4.5, 8), (5.2, 13), (6.0, 1)]
des: [(32.0, 20), (27.5, 2), (13.65, 4), (6.0, 100)]
(4.2,12)
进入,并希望查看asc
李>
asc
与4.0
有一对,低于4.2
李>
asc的头部
并查看新头部李>
4.2
,因此客户机将该对插入尾部的des
,因为4.2
低于6.0
PriorityQueue
是该作业的工具。
我是对的,还是Java中有更好的数据结构(没有外部库)我不知道
例如,ArrayList
对于这个任务来说听起来很糟糕,因为插入会发生在随机索引中,而不是在尾部插入
- 按顺序插入
PriorityQueue.add()
- 取回头部
PriorityQueue.peek()就是这样做的
- 拆下头部
PriorityQueue.poll()
或PriorityQueue.remove()
执行此操作
看起来非常适合我。的确如此。当我写这个问题时,用例变得更清晰了,我只是想知道是否还有其他合适的替代方案。但是我想对我的问题的描述清楚地表明了一个优先队列
。