优选队列概念
普通队列:先进先出
优先队列:出队顺序和入队顺序无关,和优先级有关。当访问元素时,优先级最高的会被删除。可以使用堆这种数据结构作为优先队列的底层结构。
代码
package heap;
import com.company.project.Queue;
import java.util.Arrays;
import java.util.Random;
//继承comparable 比较接口,实现queue队列(调用自己写的queue接口)
public class MyselfPriorityQueue<T extends Comparable<T>> implements Queue<T> {
public static void main(String[] args) {
Random random=new Random();
MyselfPriorityQueue<Integer> maxHeap=new MyselfPriorityQueue<>();
for (int i = 0; i < 7; i++) {
maxHeap.enQueue(random.nextInt(80));
}
System.out.println(maxHeap);
maxHeap.enQueue(44);
System.out.println(maxHeap);
}
//创建一个堆
private MaxHeap<T> heap;
//无参构造
public MyselfPriorityQueue() {
heap=new MaxHeap<>();
}
@Override
public boolean isEmpty() {
//调用MaxHeap类中的isEmpty()
return heap.isEmpty();
}
@Override
public int getsize() {
//调用MaxHeap类中的getSize()
return heap.getSize();
}
@Override
public void enQueue(T ele) {
//调用MaxHeap类中的add() 添加方法 入队
heap.add(ele);
}
@Override
public T duQueue() {
//调用MaxHeap类中的getpriorityFirst() 每次取出索引为0的元素的方法 出队
return heap.getpriorityFirst();
}
@Override
public T getFont() {
//调用MaxHeap类中的getthebignum() 每次取出优先级最高的方法
return heap.getthebignum();
}
@Override
public String toString() {
return "MyselfPriorityQueue{" +
"heap=" + heap +
'}';
}
}
eg:入队 添加一个元素进队