Java中优先队列转换为ArrayList(最佳方式??)

Java中优先队列转换为ArrayList(最佳方式??),java,Java,我一直在研究将ArrayList移动到PriorityQueue的最佳方法,发现最好的方法是使用方法pq.addAll(dataArrayList)。但我现在的问题是,如何将这个优先级队列pq传递给之前的DataArrayList 我能想到的唯一方法是在队列中运行一个结构,如果队列不是空的,它将提取并添加到dataArrayList中 public void sort2(Comparator<Router> comp){ PriorityQueue<Router>

我一直在研究将ArrayList移动到PriorityQueue的最佳方法,发现最好的方法是使用方法pq.addAll(dataArrayList)。但我现在的问题是,如何将这个优先级队列pq传递给之前的DataArrayList

我能想到的唯一方法是在队列中运行一个结构,如果队列不是空的,它将提取并添加到dataArrayList中

public void sort2(Comparator<Router> comp){
    PriorityQueue<Router> pq = new PriorityQueue<Router>(comp);
    pq.addAll(datos);
    datos.clear();
    while(!pq.isEmpty()) {
        datos.add(pq.poll());
    }

}
public void sort2(比较器comp){
优先级队列pq=新优先级队列(comp);
pq.addAll(datos);
datos.clear();
而(!pq.isEmpty()){
datos.add(pq.poll());
}
}
Router是一个字符串数组列表(它实际上是一个具有ip地址、城市、标识符的类,但为了更好地理解彼此,我们将其视为一个字符串),例如[“a”、“c”、“b”]和排序规则-->[“a”、“b”、“c”]


这是可行的,但这是实现这一点的最佳方式吗?谢谢。

数组列表进行排序是否有意义?如果您没有像使用优先级队列一样使用它,
PriorityQueue
的含义是什么?是的,但我正在分析三种排序方法,使用默认方法,使用优先级队列,最后使用堆。然后,我将对大型输入进行性能测试,以深入分析它们。那么,您的代码是最简单的版本
PriorityQueue
不提供任何批量检索操作(除了通过
spliterator()
,这可能会更慢)。此外,内部
PriorityQueue
作为堆实现。