我有一个Collection(一个特定的Set),并希望从中创建一个PriorityQueue。我也想要我的自定义比较器,但是没有这样的构造函数。
PriorityQueue(Collection c) PriorityQueue(int initialCapacity, Comparator comparator)
http://developer.android.com/reference/java/util/PriorityQueue.html
有没有办法先从Collection中创建PriorityQueue,然后再添加Comparator?如果不是,那么“手动”添加它的最有效方法是什么?
答案 0 :(得分:2)
您可以使用第二个构造函数,然后调用addAll(Collection col)
方法
答案 1 :(得分:1)
基本上你有两个选择:
使用PriorityQueue(Collection c)
构造函数,让集合中的元素实现Comparable
接口。 (并让优先级队列回到元素的the natural ordering)。
使用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