我的课程只有一对(double, int)
。我需要保留这些对象的两个集合,这两个集合都按double
排序,一个按升序排列,另一个按降序排列。
示例:
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
的值删除它或执行一些计算; 所以,主要的操作是:
示例:
(4.2, 12)
输入,并希望查看asc
; asc
与4.0
配对,低于4.2
; asc
的头部并查看新头部; 4.2
,因此客户端会在des
的尾部插入对,因为4.2
低于6.0
。由于没有客户想要遍历集合,而是处理当前的头部,并且由于插入必须按顺序且非常快,我会说PriorityQueue
是工作的工具
我是对的,还是Java中没有更好的数据结构(没有外部库),我不知道?
例如,ArrayList
对于此任务来说听起来很糟糕,因为插入会发生在随机索引上,而不是插入尾部。
答案 0 :(得分:1)
- 按顺序插入
PriorityQueue.add()
就是这么做的。
- 检索头
PriorityQueue.peek()
就是这么做的。
- 删除头
PriorityQueue.poll()
或PriorityQueue.remove()
就是这样做的。
似乎非常适合我。