JavaSE——集合框架一(4/7)-List系列集合:LinkedList集合的底层原理、特有方法、队列、栈

简介: JavaSE——集合框架一(4/7)-List系列集合:LinkedList集合的底层原理、特有方法、队列、栈

LinkedList集合的底层原理

  • 基于双链表实现的。

双链表在数据结构中涉及到,我们简单看一遍单向链表和双向链表的结构:

  • 特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的

特有方法

LinkedList新增了:很多首尾操作的特有方法

图片.png

下面将通过LinkedList的两个应用场景来使用这些特有方法。

LinkedList的应用场景之一:用来设计队列

队列

  • 队列的特点是:先进先出,后进后出

只是在首尾增删元素,用LinkedList来实现很合适!

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
 
public class ListDemo2 {
    public static void main(String[] args) {
        //1.创建一个队列
        LinkedList<String> queue = new LinkedList<>();
        queue.addLast("第一号人");     //[]                <-    第一号人
        queue.addLast("第二号人");     //[第一号人]          <-   第二号人
        queue.addLast("第三号人");     //[第一号人,第二号人]  <-   第三号人
        queue.addLast("第四号人");     //......
        System.out.println(queue);
 
        //出队
        System.out.println(queue.removeFirst());   //          <-  [第一号人, 第二号人, 第三号人, 第四号人]
        System.out.println(queue.removeFirst());   //第一号人   <-  [ 第二号人, 第三号人, 第四号人]
        System.out.println(queue.removeFirst());   //第一号人 第二号人  <-  [ 第三号人, 第四号人]
        System.out.println(queue);                 //第一号人 第二号人 第三号人,  <-  [第四号人]
    }
}

运行结果:


LinkedList的应用场景之一:用来设计栈

  • 栈的特点:后进先出,先进后出

只是在首部增删元素,同样地,用LinkedList来实现。

  • 数据进入栈模型的过程称为:压/进栈(push)
  • 数据离开栈模型的过程称为:弹/出栈(pop)

所以,原本我们应该使用的addFirst可以用push代替;removeFirst可以用pop代替。


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
 
public class ListDemo2 {
    public static void main(String[] args) {
 
        //2.创建一个栈对象
        LinkedList<String> stack = new LinkedList<>();
 
        //压栈
        stack.push("第一颗子弹");    //第一颗子弹 -> []
        stack.push("第二颗子弹");    //第二颗子弹 -> [第一颗子弹]
        stack.push("第三颗子弹");    //第三颗子弹 -> [第二颗子弹, 第一颗子弹]
        stack.push("第四颗子弹");    //第四颗子弹 -> [第三颗子弹, 第二颗子弹, 第一颗子弹]
        System.out.println(stack);    //[第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
 
        //出栈
        System.out.println(stack.pop());    // <- [第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
        System.out.println(stack.pop());    // 第四颗子弹 <- [第三颗子弹, 第二颗子弹, 第一颗子弹]
        System.out.println(stack);          // [第二颗子弹, 第一颗子弹]
    }
}


运行结果:


END



目录
相关文章
|
4月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
230 4
|
7月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
338 1
|
7月前
|
存储 安全 Java
Java 学习路线 35 掌握 List 集合从入门到精通的 List 集合核心知识
本文详细解析Java中List集合的原理、常用实现类(如ArrayList、LinkedList)、核心方法及遍历方式,并结合数据去重、排序等实际应用场景,帮助开发者掌握List在不同业务场景下的高效使用,提升Java编程能力。
513 0
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
306 0
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1501 1
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
514 1
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
308 3
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
1497 3
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估

热门文章

最新文章