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