优先级队列 百科解释如下
如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。对于优先权相同的元素,可按先进先出次序处理或按任意优先权进行。
就是原本队列是先进先出的,现在给它加一个优先级,优先级嘛就像会员一样,有些事情可以先做。但针对内部实现的话,很容易想到就需要一个排序的操作。在容器中一旦牵涉到排序都会出现一个Comparable接口当然这个也不例外。这个接口很好用实现以下,然后再重写一下compareTo方法即可,看下面的代码。
import java.util.PriorityQueue;
public class ToDoList extends PriorityQueue<ToDoList.ToDoItem>{
static class ToDoItem implements Comparable<ToDoItem> {
private char primary;
private int secondary;
private String item;
public ToDoItem(String td, char pri, int sec) {
this.primary = pri;
this.