【问题标题】:Java - Alternative to PriorityQueue that keeps duplicate insertion orderJava - 保留重复插入顺序的 PriorityQueue 替代方案
【发布时间】:2016-05-03 10:07:07
【问题描述】:

我有一个问题,我需要一个数据结构,让我可以按排序顺序存储一堆订单对象(具有价格和数量),以便我可以轻松检索价格最低的对象。我需要的唯一操作是“插入”和“检索最小”,这使得优先级队列似乎是一个不错的选择,但问题是我还需要跟踪重复项的插入顺序,以便它始终是第一个插入的重复项首先被检索到。在这种情况下,重复只是价格相同的订单。

Java PriorityQueue 类似乎没有对重复项的检索顺序做出任何承诺,所以我需要一些其他的替代方案。大家有什么推荐的?

【问题讨论】:

    标签: java data-structures priority-queue


    【解决方案1】:

    您可以添加字段或使用原子计数器和/或时间戳包装元素以记录原始顺序。

    【讨论】:

    • 没错。使用接受 Comparator 的构造函数,并让该函数比较计数器或时间戳以及项目 ID。
    • 添加到使用原子计数器,例如初始化final static AtomicInteger counter = new AtomicInteger(); 用法counter.getAndIncrement() 会自动将每个当前值加一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2010-12-26
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多