gpt4 book ai didi

java - PriorityQueue 适合这种情况吗?

转载 作者:行者123 更新时间:2023-12-01 14:03:47 24 4
gpt4 key购买 nike

我有一个类,它只不过是一对(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)]

主要使用模式是:

  1. 客户端输入一对(d, i)
  2. 检查其中一个集合的头部(取决于客户端)是否有一对lower(分别higher),相对于d,比给定的对;
  3. 如果存在,则将其删除或根据 i 的值执行一些计算;
  4. 如果它不存在,或者未被删除,请将给定对插入另一个集合中的适当位置。

那么,主要操作是:

  • 按顺序插入;
  • 取回头部;
  • 移除头部。

示例:

  1. 客户端输入 (4.2, 12) 并希望查看 asc
  2. asc4.0 配对,低于 4.2
  3. 删除asc的头部并查看新的头部;
  4. 新的头部高于 4.2,因此客户端将该对插入到尾部的 des 中,因为 4.2 低于6.0

由于没有客户端想要遍历集合,而是处理当前的头,并且由于插入必须按顺序且非常快,我认为 PriorityQueue 是一个工具为了这份工作。

我是对的,还是 Java 中有更好的数据结构(没有外部库)我不知道?

例如,ArrayList 对于此任务来说听起来很糟糕,因为插入将发生在随机索引处,而不是在尾部插入。

最佳答案

  • Insert in order

PriorityQueue.add() 就是这样做的。

  • Retrieve head

PriorityQueue.peek() 就是这样做的。

  • Remove head

PriorityQueue.poll()PriorityQueue.remove() 可以做到这一点。

看起来非常适合我。

关于java - PriorityQueue 适合这种情况吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19104951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com