如果我有一个具有Comparator的PriorityQueue,以及一个实现Comparable类的元素类,并且它们的排序发生冲突,那么队列将如何处理排序?它会抛出异常还是忽略其中一个排序规则?
答案 0 :(得分:1)
你可以在那里阅读:http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html
优先级队列的元素按其自然顺序排序,或者由队列构建时提供的比较器排序,具体取决于使用的构造函数。
所以,实际上,如果它有一个特殊的Compatator
作为构造时间,自然顺序比较(Comparable
接口给出的那个)将被忽略
这是你需要使用的构造函数,以便获得我刚刚描述的行为:
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
创建具有指定初始容量的PriorityQueue,该容量根据指定的比较器对其元素进行排序。