Java 中的栈与队列

  1. 实现队列,采用 LinkedList 类
  2. 实现栈,采用 java.util.Stack 类
  3. 优先级队列,采用 PriorityQueue 类
  4. LRU cache,采用 LinkedHashMap,参考:https://www.cnblogs.com/hapjin/p/17576261.html
  5. key 有序的 Map,https://www.cnblogs.com/hapjin/p/17541911.html
public class Main {
    public static void main(String[] args) {
        //创建队列
        Queue<String> queue = new LinkedList<>();
        queue.offer("a");//入队列
        queue.offer("b");
        String peek = queue.peek();//取队列第一个元素
        System.out.println("peek=" + peek);//peek=a
        String a = queue.poll();//出队列
        System.out.println("a=" + a);//a

        //创建栈
        Stack<String> stack = new Stack<>();
        System.out.println(stack.push("a"));//a
        System.out.println(stack.push("b"));//b
        System.out.println(stack.peek());//获取栈顶元素 b
        System.out.println(stack.pop());//出栈 b


        //大顶堆,也可以使用 Comparator 自定义元素的比较顺序。
//        PriorityQueue<String> pq = new PriorityQueue<>(Collections.reverseOrder());
        PriorityQueue<String> pq = new PriorityQueue<>();//从小到大,小顶堆
        System.out.println(pq.offer("b"));//true
        System.out.println(pq.offer("a"));//true
        System.out.println(pq.peek());//a, 小顶堆, 堆顶是 a
        System.out.println(pq.poll());//a, 出队列
        System.out.println(pq.peek());//b
    }
}

LinkedList 也可以作为栈来使用,创建栈时必须定义成 LinkedList 类型,示例如下:

        LinkedList<String> mystack = new LinkedList<>();
        mystack.push("a");
        mystack.push("b");
        System.out.println(mystack.peek());//b
        System.out.println(mystack.pop());//b
posted @ 2024-03-09 13:32  大熊猫同学  阅读(3)  评论(0编辑  收藏  举报