LinkedList(实现了queue,deque接口,List接口)实现栈和队列的功能
LinkedList是用双向链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。
底层是一个双向链表,链表擅长插入和删除操作,队列和栈最常用的2种操作都设计到插入和删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.util.LinkedList; import java.util.Queue; //用linkedList模拟队列,因为链表擅长插入和删除 public class Hi { public static void main(String [] args) { //做剑指offer遇见过这个数结 Queue<String> queue = new LinkedList<String>(); //追加元素 queue.add( "zero" ); queue.offer( "one" ); queue.offer( "two" ); queue.offer( "three" ); queue.offer( "four" ); System.out.println(queue); //[zero, one, two, three, four] //从队首取出元素并删除 System.out.println(queue.poll()); // zero System.out.println(queue.remove()); //one System.out.println(queue); //[two, three, four] //从队首取出元素但是不删除 String peek = queue.peek(); System.out.println(peek); //two //遍历队列,这里要注意,每次取完元素后都会删除,整个 //队列会变短,所以只需要判断队列的大小即可 while (queue.size() > 0 ) { System.out.println(queue.poll()); } //two three four } } |
//用linkedList模拟栈,因为链表擅长插入和删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import java.util.Deque; import java.util.LinkedList; public class Hi { public static void main(String[] args) { /*模拟栈,这是从头开始进来的*/ Deque<String> deque = new LinkedList<String>(); /*Pushes an element onto the stack *at the head of this dequeue */ deque.push( "a" ); deque.push( "b" ); deque.push( "c" ); System.out.println(deque); //[c, b, a] //获取栈首元素后,元素不会出栈 System.out.println(deque.peek()); //c while (deque.size() > 0 ) { //获取栈首元素后,元素将会出栈 System.out.println(deque.pop()); //c b a } System.out.println(deque); //[] /*模拟栈*/ deque.offerLast( "a" ); deque.offerLast( "b" ); deque.offerLast( "c" ); // [a, b, c] while (!deque.isEmpty()) System.out.println(deque.pollLast()); } // 先输出c再b最后a } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | import java.util.Stack; //没有用到接口编程 public class Hi { public static void main(String[] args) { Stack<Integer> s = new Stack<Integer>(); s.push( 1 ); s.push( 2 ); // [1,2] s.push( 3 ); // [1,2,3] while (!s.isEmpty()){ System.out.println(s.pop()); } //依次输入 3 接着是2 ,然后1 } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?