为什么我的 Java 中的 PriorityBlockingQueue 无法正确排序?

2023-12-08

由于某种原因,当我添加到优先级队列时,它不会完全按字母顺序对我的字符串进行排序,我不明白为什么。

这是添加到 PriorityBlockingQueue 的代码:

String toAdd = String.format("%s/%s", directory, s);
outputData.add(toAdd);

但我得到的输出并未完全排序(只有前几行,但您可以看到它未排序):

../StartingTree/files/abknl/apfmpohgyh/a.class
../StartingTree/files/abknl/apfmpohgyh/a.java
../StartingTree/files/abknl/aqybc/aeph.java
../StartingTree/files/abknl/apfmpohgyh/bnjuxxdi.class
../StartingTree/files/abknl/bbxudleuf/jlffhq/y/xwjj/dyetqhsch/bpg.class
../StartingTree/files/abknl/bbxudleuf/mxb/fe/ndmg/axapxuco.html
../StartingTree/files/abknl/aqybc/atyuojdu.txt

这是预期输出文件的排序输出的真实(第一部分):

../StartingTree/files/abknl/apfmpohgyh/a.class
../StartingTree/files/abknl/apfmpohgyh/a.java
../StartingTree/files/abknl/apfmpohgyh/bnjuxxdi.class
../StartingTree/files/abknl/apfmpohgyh/bnjuxxdi.java
../StartingTree/files/abknl/apfmpohgyh/bsqsq.class
../StartingTree/files/abknl/apfmpohgyh/bsqsq.java
../StartingTree/files/abknl/apfmpohgyh/ds.class
../StartingTree/files/abknl/apfmpohgyh/ds.java

我怀疑你正在尝试迭代PriorityBlockingQueue并打印元素。

请注意,优先级队列数据结构(又称为heap) 不保证排序 - 它保证头最小,但不保证以下任何节点的顺序。

如果您希望数据保持排序 - 我建议使用类似的东西ConcurrentSkipListSet(但请注意,它是一个集合 - 因此它不允许重复的主菜),或维护一个排序的List.

如果你想使用a来获取排序后的元素PriorityBlockingQueue- 您应该迭代地删除头部并输出新的头部 - 直到优先级队列耗尽。它将保证有序输出。

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

为什么我的 Java 中的 PriorityBlockingQueue 无法正确排序? 的相关文章

随机推荐

  • 如何实现自定义命令行和执行

    我正在尝试为我的应用程序构建一个自定义命令行 我有几个基本命令 我只是使用一堆 if 语句来检查命令是什么 目前它看起来像这样 public void ExecuteCommand string input ReadLine gets la
  • 预加载图像然后更改背景javascript

    我使用脚本标记内的以下代码更改背景图像 当背景改变时 这会导致白闪 我所有的页面都是ajax 我不能只选择像背景一样的背景颜色 因为我也在个人资料页面上使用它 并且每个个人资料都有不同的背景 是否可以预加载图像然后更改背景以停止白闪 谢谢
  • 跨程序集边界返回/使用动态匿名类型

    下面的代码效果很好 如果Get and Use方法位于不同的程序集中 代码失败并出现 RuntimeBinderException 这是因为 Net运行时系统只保证匿名类型的通用性
  • 简单的正则表达式在 jQuery 中提取方括号之间的内容

    我有一堆名称类似于 comp 1 Field 或 comp 3 AnotherField 的元素 其中索引 1 或 3 发生变化 我正在尝试从名称中提取索引 现在我正在使用 var index input last attr name ma
  • SpreadsheetFormatRow 突然停止工作

    我见过this帖子 但看起来确实有解决方案 无论如何 我正在使用 ColdFusion 10 生成 Excel 电子表格 但是 当我使用 SpreadsheetFormatRow 并传入要格式化的行时 它只执行大约 3 个操作 然后突然停止
  • 通过 Jenkins CI 工具执行 AUTO IT EXE

    我正在使用 CI Jenkins 工具并尝试执行 AUTO IT Exe 文件 我尝试通过詹金斯 使用以下选项 但是什么都没有解决 执行命令行参数 批处理文件 ant file Windows 运行器插件 通过 Jenkins 在从属设备上
  • 如果其中一个是使用 Popen 启动的,为什么两个 Python 脚本之间的套接字连接会中断?

    所以我有两个非常简单的 python 脚本通过套接字进行通信 现在它们都在同一台 Windows PC 上运行 这是控制器 py import socket import time import sys from subprocess im
  • 无法使用 Python 将阿拉伯语解码的 Unicode 保存到 CSV 文件

    我正在使用 python 的 Twitter 流媒体包 我目前正在使用以 unicode 编写的关键字来搜索包含该单词的推文 然后 我使用 python 创建推文的数据库 csv 文件 但是 当我将推文保存到 csv 中时 我想将它们转换回
  • 了解用户是否启动了应用程序

    好吧 这个标题可能看起来很奇怪 但请耐心听我说 我有一个应用程序 用户可以根据其首选项进行设置 以便在登录时启动 这意味着我可以预期有时该应用程序将由用户启动 单击 Dock Finder 等 但有时该应用程序将在登录时由系统自动启动 我想
  • 如何从 UITableView 中删除选定的行? [复制]

    这个问题在这里已经有答案了 可能的重复 将表更改为编辑模式并删除普通 ViewController 中的行 我想从 tableView 中删除选定的行 我想向用户提供当用户在行上滑动或轻弹手指时删除该行的功能 我知道编辑风格提供了一个带有
  • 使用 std::chrono 在 C++ 中输出日期和时间

    我一直在升级一些旧代码 并尽可能更新到 c 11 以下代码是我在程序中显示时间和日期的方法 include
  • 如何使用 picasso 库实现我自己的磁盘缓存 - Android?

    我正在使用 picasso 库为我的应用程序加载图像 但我不知道如何使用 picasso 库实现我自己的磁盘 sdcard 缓存 Picasso 使用 HTTP 客户端进行磁盘缓存 如果已经配置 它将使用该客户端而不是安装自己的客户端 对于
  • 更改 UISegmentedControl 的高度

    我正在尝试改变高度UISegmentedControl使用此代码 CGRect frame mySegmentedControl frame mySegmentedControl setFrame CGRectMake frame orig
  • 我只需要重写 Toast 类的 show()

    我只需要覆盖show 方法为Toast班级 我创建了一个扩展的类Toast类 但随后我创建了一条 toast 消息 但出现异常setView View view 还没有被调用 但我不想创建自定义View方法 但使用默认方法 那么 如何才能覆
  • SecurityAttribute.Unrestricted 问题

    我对这个属性感到困惑 正如这里提到的 http msdn microsoft com en us library system security permissions securityattribute unrestricted aspx
  • 使用自定义 CSS 将 HTML 文件加载到 WebView

    我的 Android 应用程序上有一个 WebView 可以加载 WebView loadUrl 手机内部存储中的不同本地 HTML 文件 我想为它们添加一些自定义 css 样式 现在 我可以让我的应用程序编辑每个 HTML 文件并添加 C
  • scipy curve_fit 不喜欢数学模块

    在尝试创建一个示例时scipy optimize curve fit我发现scipy似乎与Python的不兼容math模块 而函数f1工作正常 f2抛出错误消息 from scipy optimize import curve fit fr
  • 添加到词典的不同方式

    有什么区别Dictionary add key value and Dictionary key value 我注意到最后一个版本没有抛出ArgumentException插入重复密钥时 但有什么理由更喜欢第一个版本 Edit 请问谁有这方
  • 警告:无法访问代码,使用 Reactjs

    我正在使用 ReactJs 我有两个组件 PrescriptionIndex 和 PrescriptionNew 将一个组件与另一个组件集成 这是我的第一个组件 PrescriptionNew import React Component
  • 为什么我的 Java 中的 PriorityBlockingQueue 无法正确排序?

    由于某种原因 当我添加到优先级队列时 它不会完全按字母顺序对我的字符串进行排序 我不明白为什么 这是添加到 PriorityBlockingQueue 的代码 String toAdd String format s s directory