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 @   大熊猫同学  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示