【问题标题】:Removing a range of elements from a priority Queue in Java从 Java 中的优先级队列中删除一系列元素
【发布时间】:2021-04-12 02:49:13
【问题描述】:

如何从按字符串值排序的优先级队列中删除一系列元素? (例如,在字母表的优先级队列中,第一个元素是“A”,然后是“B”,依此类推,用户可能希望删除元素“M”到“Q”)。

【问题讨论】:

  • 您好,您已经尝试过吗?
  • @YassinHajaj 嗨,我尝试给字符串 int 值,然后在循环中删除它们,但这需要很长时间,所以我正在寻找更好的方法。
  • 如果你分享你迄今为止尝试过的东西(基本上是来源),我们会更容易提供帮助
  • @YassinHajaj 不幸的是,我在一小时前删除了它,无法以其他方式解决它。

标签: java


【解决方案1】:

由于PriorityQueue 只是部分排序,一个范围内的值不会存储在一起,因此不能有效地删除。如果您需要按范围有效删除,则不同的数据结构可能更适合。例如,使用 TreeSet 你可以这样做:

TreeSet<Whatever> set = ...;
set.subset(from, to).removeAll();

【讨论】:

  • 您好,感谢您的贡献!不幸的是,这是作业的一部分,我们不应该更改讲师定义的数据结构。
猜你喜欢
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2013-02-13
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
相关资源
最近更新 更多