如何迭代 PriorityQueue?

2023-11-22

for (Event e : pq)

不按优先级顺序迭代。

while(!pq.isEmpty()){
  Event e = pq.poll();
}

这有效但清空了队列。


你不能遍历一个Priority Queue由于底层实现的原因(我认为它是Java中的最小堆),因此按该顺序排列。

这不是一个排序数组,这样您就可以从一个元素转到优先级较低的元素。

Peeking(读取堆中的顶部元素堆)是常数时间O(1)因为它着眼于最小的元素。

为了得到第二个下一个你must将最小的顶部元素出队,这就是它的工作原理。
出队(重新堆化 =O(log n)time) 不仅仅是取出该元素的问题,底层结构会自行重新排列,以便首先取出优先级最低的元素。

此外,要遍历整个优先级队列以按排序顺序读取所有项目,它是一个O(n log(n))手术。
因此,您也可以只获取队列中的所有元素并对它们进行排序(也可以O(n log (n)))然后你就可以按照你的意愿浏览它们。唯一的缺点是您持有队列的额外副本。

尽管如此,如果您需要以这种方式遍历数据,优先级队列可能不是满足您需求的正确数据结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何迭代 PriorityQueue? 的相关文章

  • 哪个类调用了我的静态方法?

    假设我有一个带有静态方法的 Java 类 如下所示 class A static void foo Which class invoked me 进一步假设 A 类有任意数量的子类 class B extends A class C ext
  • 我可以删除单个子实体而不加载整个集合吗?

    我有 2 个课程 如下所示 它们可以拥有非常大的集合 一个网站可能有 2 000 多个网站页面 反之亦然 class WebsitePage public int ID get set public string Title get set
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • 隐藏类的 System.out.print 调用

    我正在使用 java 库 jar 文件 该文件的作者放入了一堆System out print and System out printlns 有没有办法隐藏特定对象的这些消息 编辑 看起来jar文件似乎正在创建一堆线程 并且每个线程都有它
  • 如何在Windows命令行中执行for循环?

    我想知道这是否可能 我不熟悉使用 Windows 命令行 但我必须将它用于我正在处理的项目 我有许多文件 我需要为每个文件执行一个功能 我习惯使用 python 但显然这有点不同 所以我希望得到一些帮助 基本上 我需要 for 循环来迭代文
  • DateTimeFormatter.parseLocalDate 抛出 UnsupportedOperationException

    该API用于解析本地日期 http joda time sourceforge net apidocs org joda time format DateTimeFormatter html parseLocalDate 28java la
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 将多个视频文件合并到一个文件中

    我有多个以相同帧速率和分辨率录制的视频 我想将两个视频合并为一个视频 因此结果文件将是大视频 我正在使用 MP4 解析器 api 并使用下面的代码 Movie countVideo new MovieCreator build Channe
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • Java 套接字:可以从一个线程发送并在另一个线程上接收吗?

    这可能是一个非常基本的问题 但我很难找到答案 让一个线程写入 Socket 的输出流 而另一个线程从 Socket 的输入流读取数据 这样可以吗 编辑 这是一个与外部服务器通信的客户端应用程序 我并不是想让两个线程互相交谈 很抱歉含糊不清
  • Java中无参数的for循环

    我在看别人的代码 发现了这段代码 for 我不是 Java 专家 这行代码在做什么 起初 我认为这会创建一个无限循环 但在该程序员使用的同一个类中 while true 其中 如果我错了 请纠正我 是一个无限循环 这两个相同吗 为什么有人会
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • 哪个更快:清除集合或实例化新集合

    我的代码中有一些通用列表 其中有数十或数百个元素 有时我需要用其他对象重新填充此列表 所以问题是 调用什么会更快Clear 方法或创建一个new List
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个

随机推荐

  • 如何在Unity3D输入字段UI组件中使用“On Value Change”

    我正在学习有关如何使用 Unity3d 的教程 但我已经走进了死胡同 我相信新版本的 Unity 中发生了一些变化 因为该教程似乎按照我的方式工作得很好 我有一个输入字段 UI 组件 每次更改它时我都想调用 C 函数 根据教程 我只需使用输
  • 使用 PHP 将文件从一台服务器移动到另一台服务器的最佳方法是什么?

    我想设置一个运行 PHP 脚本的 CRON 该脚本又将 XML 文件 保存非敏感信息 从一台服务器移动到另一台服务器 我已获得正确的用户名 密码 并且想要使用 SFTP 协议 这些作业将每天运行 有可能一台服务器是 Linux 另一台服务器
  • iOS:如何使用 Google Drive sdk 库将文件上传到特定的 Google Drive 文件夹

    我将 Google Drive sdk 与我的 iOS 应用程序集成 但我不知道如何将文件上传到 Google 驱动器特定文件夹 这里的代码用于上传文件 但这是将文件上传到我的谷歌驱动器根文件夹 有人分享一个代码来将文件上传到谷歌驱动器特定
  • 使用 Heroku 的 Git 子模块

    问题 我在 Heroku 上有一个 Rails 3 1 应用程序 它将很快需要一堆 第 3 方 子模块 其中一些有子模块 不幸的是 Heroku 缺乏子模块支持 Heroku 网站上的一项建议是将子模块的内容移至主存储库中 here 第一次
  • pip freeze 列出已卸载的软件包

    在 OS X 10 6 8 上 我使用卸载了一个包 至少 pip 告诉我是这样 sudo pip uninstall pkg name 但当我这样做时包裹仍然出现 pip freeze 我再次尝试执行上面的卸载命令 pip 告诉我该软件包尚
  • 将输入文件替换为表单中我自己的按钮

    基本上我想隐藏输入文件并使用按钮来选择表单中的文件 如果我使用
  • onchange 事件是否传播?

    我使用事件委托来侦听 DOM 中较低层的事件 但它不适用于选择框上的 onchange 事件 onchange 事件是在 DOM 中传播还是冒泡 谷歌搜索未能找到确凿的答案 根据规格 change submit reset应该起泡并且foc
  • 查询Android数据库是否存在!

    我已经为我的 android 应用程序创建了一个数据库 其中包含静态数据并且不需要更新 删除功能 因此当应用程序启动时 我想检查数据库是否存在 如果不存在则执行我的 dbAdapter 类 我知道它是一个简单的 if 语句 但我只是想知道查
  • 您建议使用哪个 CPAN 模块将 HTML 转换为纯文本?

    您建议使用哪个 CPAN 模块将 HTML 转换为格式化纯文本 一项严格的要求是该模块必须处理 Unicode 字符 I like HTML 格式文本 and HTML FormatText WithLinks
  • Angular 2 - 如何为动态加载的组件设置 id 属性

    我在用DynamicComponentLoader加载子组件并生成以下 html
  • 在 std::map 和 std::unordered_map 之间进行选择[重复]

    这个问题在这里已经有答案了 现在std有一个真正的哈希映射unordered map 为什么 或何时 我仍然想使用旧的map over unordered map在它实际存在的系统上 是否有任何我无法立即看到的明显情况 As 已经提到过 m
  • R tm removeWords函数不删除单词

    我试图从我构建的语料库中删除一些单词 但它似乎不起作用 我首先遍历所有内容并创建一个数据框 按频率顺序列出我的单词 我使用此列表来识别我不感兴趣的单词 然后尝试创建一个删除单词的新列表 但是 这些词仍然保留在我的数据集中 我想知道我做错了什
  • 在 JAVA 中使用 JSOUP 从 HTML 中提取 CSS 样式

    任何人都可以帮助使用 Java 中的 Jsoup 从 HTML 中提取 CSS 样式 例如在下面的 html 中我想提取 ft00 和 ft01 div style width 931 height 1243 div
  • WPF:滚动项目控制内容固定标题

    是否可以使用 WPF 的 ItemsControl 执行类似的操作 Demo 我正在尝试冻结 GroupedItems 而不是 GridView 列 资源
  • 如何获取小部件当前的 x 和 y 坐标?

    我目前正在编写一个关于游戏 4 in a row 的游戏项目 为了制作图片小部件磁盘落在列中的动画 我一直在考虑创建一个 while 循环 如下所示 while widgetx and widgety 在空白部分将有我需要获得的值 我的问题
  • WebRTC 永远不会在 IceCandidate 上触发

    我开始使用 WebRTC 进行开发 但那东西从来没有给我提供 ICE 候选人 我设置了一切 我正在交换描述和东西 我还在那里缩小了一个超级丑陋的功能 以确保一切都正确运行 一个接一个 两者的信令状态都是稳定的 onError从未被触发 如预
  • Git:从存储库自动拉取?

    有没有什么方法可以设置 git 使其侦听来自远程存储库的更新 并在发生变化时拉取 用例是我想使用 git 部署一个 Web 应用程序 这样我就可以对已部署的应用程序进行版本控制 但想将 中央 git 存储库放在 Github 上而不是 We
  • 将 int 转换为 16 位无符号短整型

    我想在 Python 中将整数修剪为 16 位字 无符号短整型 像下面这样的东西不起作用 word array H word insert 0 0x19c6acc6 Use ctypes c ushort gt gt gt import c
  • 为什么 Android 教程中的大多数字段(类成员)都以“m”开头?

    我知道驼峰规则 但我对这个 m 规则感到困惑 它代表什么 我是一名 PHP 开发人员 我们 使用变量的首字母作为类型指示 例如 b 代表布尔值 i 代表整数等等 m 是 Java 的东西吗 它代表移动吗 混合 该表示法来自 AOSP And
  • 如何迭代 PriorityQueue?

    for Event e pq 不按优先级顺序迭代 while pq isEmpty Event e pq poll 这有效但清空了队列 你不能遍历一个Priority Queue由于底层实现的原因 我认为它是Java中的最小堆 因此按该顺序