Java集合Collection之LinkedList

LinkeList

LinkedList(双向链表)是一种常见的线性数据结构,但是并不会按线性的顺序存储数据。它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的引用。相比于数组,链表具有动态大小、插入和删除效率高的优点,但访问元素的效率较低。


一、应用场景

1.设计队列

如下是一个排队叫号的小例子:

java 复制代码
//应用场景1:排队叫号
LinkedList<String> queue = new LinkedList<>();
//开始排队
queue.addLast("1号病人");
queue.addLast("2号病人");
queue.addLast("3号病人");
queue.addLast("4号病人");
queue.addLast("5号病人");
System.out.println(queue);
//开始出队
//1号看完病
System.out.println(queue.removeFirst());
//2号看完病
System.out.println(queue.removeFirst());
//3号看完病
System.out.println(queue.removeFirst());
//6号挂号开始排队
queue.addLast("6号病人");
System.out.println(queue);


结果:

[1号病人, 2号病人, 3号病人, 4号病人, 5号病人]
1号病人
2号病人
3号病人
[4号病人, 5号病人, 6号病人]

2.设计栈

场景如下:

java 复制代码
 //应用场景2:设计栈【先进后出,后进先出】
        System.out.println("----------------应用场景2---------------");
            LinkedList<String> stack = new LinkedList<>();
            stack.addFirst("1号子弹");
            stack.addFirst("2号子弹");
            stack.addFirst("3号子弹");
            stack.addFirst("4号子弹");
            stack.addFirst("5号子弹");
            stack.addFirst("6号子弹");
            System.out.println(stack);
            System.out.println("发射子弹了哈");
            System.out.println(stack.removeFirst());
            System.out.println(stack.removeFirst());
            System.out.println(stack.removeFirst());
            System.out.println(stack);

这里用到了LinkedList两个独有的方法,removeFirst()和addFirst(),其实这两个方法可以用pop(出栈)和push(进栈)来操作,修改后如下:

java 复制代码
 //应用场景2:设计栈【先进后出,后进先出】
        System.out.println("----------------应用场景2---------------");
            LinkedList<String> stack = new LinkedList<>();
            stack.push("1号子弹");
            stack.push("2号子弹");
            stack.push("3号子弹");
            stack.push("4号子弹");
            stack.push("5号子弹");
            stack.push("6号子弹");
            System.out.println(stack);
            System.out.println("发射子弹了哈");
            System.out.println(stack.pop());
            System.out.println(stack.pop());
            System.out.println(stack.pop());
            System.out.println(stack);

效果结果均一样,这是因为push的底层就是addFirst(),pop的底层就是removeFirst():

相关推荐
武子康20 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康22 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言28 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥36 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base1 小时前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
Allen Bright1 小时前
maven概述
java·maven
编程重生之路1 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱1 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
努力进修1 小时前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list
politeboy1 小时前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes