Queue队列及PriorityQueue优先队列

Queue队列

  • 概念:队列是一种先进先出的数据类型,import java.util.Queue;
  • 声明:Queue queue = new LinkedList();
  • 常用方法:
    • queue.add(T t); 向队列中添加数据
    • queue.offer(T t); 判断队列中是否存在此对象,若存在则返回true
    • queue.remove(); 删除并返回队列的头元素(最先进入的数据),若队列为空,则报异常
    • queue.remove(T t); 删除指定元素
    • queue.poll(); 删除并返回队列的头元素,若为空,则返回null
    • queue.element(); 只返回队列的头元素,不进行删除,若为空,则报异常
    • queue.peek(); 只返回队列的头元素,不进行删除,若为空,则返回null

PriorityQueue优先队列

  • 概念:将进入到队列的数据按照从小到大的顺序进行排序,小的元素在队列顶,故常用作实现小顶堆或大顶堆,实现大顶堆时需要对其中的compare()方法进行重写,颠倒大小的判断

  • 声明:Queue priorityQueue = new PriorityQueue<>();

  • 常用方法:其继承Queue类并依赖其实现,方法使用一致。

  • 测试代码:对compare方法重写实现大顶堆

        Queue<Integer> priorityQueue = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });

        priorityQueue.add(3);
        priorityQueue.add(1);
        priorityQueue.add(6);
        priorityQueue.add(4);

        for (Integer integer : priorityQueue) {
            System.out.println(integer);
        }

输出结果:6 ; 4; 3; 1;

你可能感兴趣的:(数据结果与算法相关,java,队列,queue)