Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Comparator和Collection创建PriorityQueue_Java_Android - Fatal编程技术网

Java 从Comparator和Collection创建PriorityQueue

Java 从Comparator和Collection创建PriorityQueue,java,android,Java,Android,我有一个集合(一个特定的集合),并希望从中创建PriorityQueue。我还需要我的自定义比较器,但没有这样的构造函数 PriorityQueue(Collection c) PriorityQueue(int initialCapacity, Comparator comparator) 优先级队列(集合c) 优先级队列(int initialCapacity,Comparator-Comparator) 有没有办法先从集合中创建PriorityQueue,然后再添加Comparator?

我有一个集合(一个特定的集合),并希望从中创建PriorityQueue。我还需要我的自定义比较器,但没有这样的构造函数

PriorityQueue(Collection c) PriorityQueue(int initialCapacity, Comparator comparator) 优先级队列(集合c) 优先级队列(int initialCapacity,Comparator-Comparator)


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

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

如果您的集合是带有比较器的SortedSet,则PriorityQueue将自动将自定义比较器设置为PriorityQueue

第403行:


基本上,您有两个选择:

  • 使用构造函数并让集合中的元素实现接口。(并让优先级队列落在元素的后面)

  • 使用构造函数,然后添加集合的所有元素,最好使用方法


  • 如果省略时间复杂度,那么就可以了。请注意,addAll costs
    O(nlogn)
    其中
    n
    addAll()的参数大小。如果你想要
    O(n)
    buildtime,那么
    addAll()
    不是你应该走的路。