java Stack(栈)类、Queue和Deque队列
1. java Stack类
特性是:LIFO(后进先出)先进后出,最先进入的在栈底。
Stack底层也是通过数组实现的,同时也是线程安全的
Stack stack=new Stack();
//添加 (插入数据到栈顶)
stack.push(10L);
//判罚是否为空
stack.empty();
System.out.println(stack.empty());
//获取栈顶元素
Object peek = stack.peek();
System.out.println(peek);
//删除(出栈)
Object pop = stack.pop();
System.out.println(pop);
//获取元素的位置
int search = stack.search(10L);
System.out.println(search);//从1开始
System.out.println(stack);
2.Queue单向队列
特性是:FIFO(先进先出) ,最先进入的在队首。插入到队尾
//LinkedList实现了Queue接口 可以使用LinkedList
Queue queue=new LinkedList();
//Queue还有个直接子类PriorityQueue 自带扩容机制、无边界
Queue priorityQueu=new PriorityQueue();
//插入到队列末尾
priorityQueu.offer(10L);
priorityQueu.offer(40L);
System.out.println(priorityQueu);
//查看队首 不删除
Object peek = priorityQueu.peek();
System.out.println(peek);
//抛出 删除队首
Object poll = priorityQueu.poll();
System.out.println(poll);
3. Deque双向队列
ArrayDeque是无初始容量的双端队列,作为队列使用 ArrayDeque作为队列时的效率比LinkedList要高。
LinkedList则是双向链表。作为栈使用
//用作栈来使用
Deque stack=new LinkedList();
stack.addFirst(12);//添加元素
System.out.println(stack.peekFirst());//获取栈顶元素
System.out.println(stack.pollFirst());//获取并移除栈顶
//队列使用
Deque dequ=new ArrayDeque();
dequ.addLast(12); //添加元素队尾
System.out.println(dequ.peekFirst());//获取队首
System.out.println(dequ.pollFirst());//获取并移除队首
Queue Deque
增加
add add、addFirst、addLast
offer offer、offerFirst、offerLast
移除
remove remove、removeFirst、removeLast
poll pop、poll、pollFirst、pollLast
获取
element element、getFirst、getLast
peek peek、peekFirst、peekLast
1、add和offer区别
add() : 添加元素,如果添加成功则返回true,如果队列是满的,则抛出异常
offer() : 添加元素,如果添加成功则返回true,如果队列是满的,则返回false
2、remove和poll
remove() : 移除队列头的元素并且返回,如果队列为空则抛出异常
poll() : 移除队列头的元素并且返回,如果队列为空则返回null
Deque新增了一个pop方法,也是移除队列头的元素并且返回,如果队列为空则抛出异常。
3、element和peek
element() :返回队列头元素但不移除,如果队列为空,则抛出异常
peek() :返回队列头元素但不移除,如果队列为空,则返回null
因此,增加推荐使用add,移除推荐使用poll,获取元素推荐使用peek。
区别:
Queue是单向队列,Deque 是double ended queue的缩写是双向队列。
Queue只能作为队列 , Deque可以作为栈也可以作为队列使用;
Queue以及Deque都是继承于Collection,Deque是Queue的子接口。
stack、Queue、Deque 作为Collection,可以使用集合的常用方法。
分类:
Java基础相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」