赞
踩
目录
栈其实就是吃了吐,后吃的先吐,先吃的后吐。是一种数据结构。
这里我们先看关于栈的方法:
在Java中,栈的底层是数组。
注意,我们要区分数据结构的栈和虚拟机栈。
栈就是数据结构;虚拟机栈是JVM划分的一块内存;栈帧是方法调用时,会在虚拟机中给这个方法开辟一块内存。
Queue是普通队列,Deque是双端队列,注意这里都是接口。
可以发现,Queue是一个接口,不能直接实例化,所以我们要通过向上转型。Queue底层是一个双向链表。
因为都是继承的接口,所以有很多方法都是类似的,这里我们先观察以下代码:
- public class Test2 {
- public static void main(String[] args) {
- Queue<Integer> queue = new LinkedList<>();
- //因为Queue是接口,不能直接实例化
- queue.offer(1);
- queue.offer(2);
- queue.offer(3);
-
- System.out.println(queue.peek());
- System.out.println(queue.poll());//出队
- System.out.println(queue);
- }
- }
双端队列指的是在队列两边都可以进行出队和入队的操作。
- public static void main(String[] args) {
- //双端队列
- Deque<Integer> deque1 = new LinkedList<>();//用双向链表实现
- Deque<Integer> deque2 = new ArrayDeque<>();//用循环数组实现
- }
这里双端队列既可以双向链表实现又可以用循环数组实现。
这里双端队列就有优势了,不仅可以当做队列,也可以当做栈使用。
多练就会变强!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。