当前位置:   article > 正文

栈和队列(Stack、Queue)

栈和队列(Stack、Queue)

目录

前言:

栈:

栈的方法:

栈的源码: 

队列:

Queue和Deque接口:

队列的一些方法:

Queue源码:

双端队列: 

总结:


前言:

        栈其实就是吃了吐,后吃的先吐,先吃的后吐。是一种数据结构

栈:

栈的方法:

        这里我们先看关于栈的方法:

栈的源码: 

        在Java中,栈的底层是数组。

        注意,我们要区分数据结构的栈和虚拟机栈。

        栈就是数据结构;虚拟机栈是JVM划分的一块内存;栈帧是方法调用时,会在虚拟机中给这个方法开辟一块内存。

队列:

Queue和Deque接口:

        Queue是普通队列,Deque是双端队列,注意这里都是接口。

队列的一些方法:

 

         可以发现,Queue是一个接口,不能直接实例化,所以我们要通过向上转型。Queue底层是一个双向链表。

Queue源码:

        因为都是继承的接口,所以有很多方法都是类似的,这里我们先观察以下代码:

  1. public class Test2 {
  2. public static void main(String[] args) {
  3. Queue<Integer> queue = new LinkedList<>();
  4. //因为Queue是接口,不能直接实例化
  5. queue.offer(1);
  6. queue.offer(2);
  7. queue.offer(3);
  8. System.out.println(queue.peek());
  9. System.out.println(queue.poll());//出队
  10. System.out.println(queue);
  11. }
  12. }

双端队列: 

        双端队列指的是在队列两边都可以进行出队和入队的操作。

  1. public static void main(String[] args) {
  2. //双端队列
  3. Deque<Integer> deque1 = new LinkedList<>();//用双向链表实现
  4. Deque<Integer> deque2 = new ArrayDeque<>();//用循环数组实现
  5. }

        这里双端队列既可以双向链表实现又可以用循环数组实现。

        这里双端队列就有优势了,不仅可以当做队列,也可以当做栈使用。

总结:

        多练就会变强!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/77747
推荐阅读
相关标签
  

闽ICP备14008679号