由于某种原因,当我添加到优先级队列时,它不会完全按字母顺序对我的字符串进行排序,我不明白为什么。
这是添加到 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(使用前将#替换为@)