在优先级队列中,比较优先级,比较器或Comparable的自然顺序?

时间:2014-01-10 02:48:36

标签: java priority-queue comparator comparable

如果我有一个具有Comparator的PriorityQueue,以及一个实现Comparable类的元素类,并且它们的排序发生冲突,那么队列将如何处理排序?它会抛出异常还是忽略其中一个排序规则?

1 个答案:

答案 0 :(得分:1)

你可以在那里阅读:http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

优先级队列的元素按其自然顺序排序,或者由队列构建时提供的比较器排序,具体取决于使用的构造函数。

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

这是你需要使用的构造函数,以便获得我刚刚描述的行为:

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

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