从比较器和集合创建PriorityQueue

时间:2010-11-03 18:52:15

标签: java android

我有一个Collection(一个特定的Set),并希望从中创建一个PriorityQueue。我也想要我的自定义比较器,但是没有这样的构造函数。

PriorityQueue(Collection c)
PriorityQueue(int initialCapacity, Comparator comparator)

http://developer.android.com/reference/java/util/PriorityQueue.html

有没有办法先从Collection中创建PriorityQueue,然后再添加Comparator?如果不是,那么“手动”添加它的最有效方法是什么?

3 个答案:

答案 0 :(得分:2)

您可以使用第二个构造函数,然后调用addAll(Collection col)方法

答案 1 :(得分:1)

基本上你有两个选择:

  1. 使用PriorityQueue(Collection c)构造函数,让集合中的元素实现Comparable接口。 (并让优先级队列回到元素的the natural ordering)。

  2. 使用PriorityQueue(int initialCapacity, Comparator comparator)构造函数,然后添加集合的所有元素,最好使用PriorityQueue.addAll(Collection c)方法。

答案 2 :(得分:0)

如果你的套装是Comparator的SortedSet,那么PriorityQueue会自动将你的自定义Comparator设置为PriorityQueue。

第403行:

http://www.docjar.com/html/api/java/util/PriorityQueue.java.html