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



目录
相关文章
|
3天前
|
文字识别 Java
文本,文字识别07,SpringBoot服务开发-入参和返回值,编写接口的时候,要注意识别的文字返回的是多行,因此必须是List集合,Bean层,及实体类的搭建
文本,文字识别07,SpringBoot服务开发-入参和返回值,编写接口的时候,要注意识别的文字返回的是多行,因此必须是List集合,Bean层,及实体类的搭建
|
6天前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
10天前
|
存储 API Kotlin
Kotlin中的List集合
Kotlin中的List集合
13 2
|
3天前
|
存储 语音技术 Python
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
|
4天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
5天前
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估
|
9天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
10天前
|
存储 Dart
Dart中的集合类型:List(数组/列表)
Dart中的集合类型:List(数组/列表)
7 0
|
10天前
|
存储 设计模式 并行计算
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
|
12天前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
13 1