Java300学习笔记(16)—— Queue 接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/86690649

1 队列

在这里插入图片描述

1.1 Queue(单向)

  • 队列通常 FIFO (先进先出)
  • 优先级队列和堆栈 LIFO (后进先出)

1.2 Deque (双向,双端访问)

1.3 测试(模拟银行业务)

package day04.que;

import java.util.ArrayDeque;
import java.util.Queue;

/*
 * 使用队列模拟银行存款业务
 * */
public class Demo1 {
    public static void main(String[] args) {
        Queue<Request> que = new ArrayDeque<>();
        for (int i = 0; i < 10; i++) {
            final int num = i;
            que.offer(new Request() {
                @Override
                public void deposit() {
                    System.out.println("第" + num + "个人办理存款业务,存款额度:" + Math.random() * 10000);
                }
            });
        }

        dealWith(que);
    }

    //处理存款业务
    public static void dealWith(Queue<Request> que) {
        Request req = null;
        while (null != (req = que.poll())) {
            req.deposit();
        }
    }

}

interface Request {
    //存款
    void deposit();
}

在这里插入图片描述

1.4 自定义堆栈

  • MyStack.java
package day04.que;
import java.util.ArrayDeque;
import java.util.Deque;
/*
 * 使用队列实现自定义堆栈
 * 1. 弹
 * 2. 压
 * 3. 获取头
 *
 * */
public class MyStack<E> {
    private Deque<E> container = new ArrayDeque<E>();

    private int cap;

    public MyStack(int cap) {
        this.cap = cap;
    }

    public boolean push(E e) {
        if (container.size() + 1 > cap) {
            return  false;
        }

        return container.offerLast(e);
    }

    public E pop(){
        return container.pollLast();
    }

    public int size(){
        return container.size();
    }
}

  • Demo2.java
package day04.que;


public class Demo2 {
    public static void main(String[] args) {
        MyStack<String> backHistory = new MyStack<>(3);

        backHistory.push("AAA");
        backHistory.push("BBB");
        backHistory.push("CCC");
        backHistory.push("DDD");

        System.out.println("大小:" + backHistory.size());

        String item = null;
        while (null != (item = backHistory.pop())) {
            System.out.println(item);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/86690649