java - 在优先级队列中,Comparator 和 Comparable 的自然排序哪个优先?

标签 java priority-queue comparator comparable

如果我有一个带有 Comparator 的 PriorityQueue 和一个实现 Comparable 类的元素类,并且它们的排序冲突,那么队列将如何处理排序?它是否抛出异常或忽略排序规则之一?

最佳答案

正如您可以在那里读到的:http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

优先级队列的元素根据其自然顺序进行排序,或者通过队列构造时提供的比较器进行排序,具体取决于使用的构造函数。

因此,实际上,如果它有一个特殊的 Compatator 作为构造时间,自然顺序比较(由 Comparable 接口(interface)给出的)将是 忽略

这是您需要使用的构造函数,以便实现我刚才描述的行为:

PriorityQueue(int initialCapacity, Comparator<? super E> comparator)

创建一个具有指定初始容量的 PriorityQueue,并根据指定的比较器对其元素进行排序。

关于java - 在优先级队列中,Comparator 和 Comparable 的自然排序哪个优先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035351/

相关文章:

java - core.logic可以直接在Java中使用吗?

java - ElasticSearch使字段无法从Java搜索

c++ - 多路优先级队列实现

java - 比较器在什么方面优于可比较的?

java - 用 Java 编写 Pair<String, Date> 的比较器

java - Gradle 构建失败 - APK META-INF 中复制的重复文件

java - JAVA PriorityQueue 顺序不正确

java - 如何修复 Java 优先级队列以按特定属性正确排序?

java - 如何为字母字符制作一个与字母顺序不同的比较器

java - jBPM 5.4 与 Tomcat 7 和 MySQL