Java小白入门教程:LinkedList

目录

一、定义

二、作用

1、存储数据

2、动态扩容

3、提供方便的操作方法

三、使用场景

1.当你需要频繁地在列表的开头或结尾添加或删除元素时。

2.当你不需要按索引快速访问元素时,因为LinkedList访问元素需要从头开始遍历

3.当你不需要线程安全的数据结构时。

四、语法及示例

1、创建LinkedList

2、添加元素

3、获取元素

4、修改元素

5、删除元素

6、获取/计算大小

7、遍历元素

8、判断是否包含某个元素

9、清空LinkedList

五、完整实例


一、定义

LinkedList是Java中的一个类,"它实现了List接口和Deque接口,可以用来存储一系列动态的、可重复的元素。

与ArrayList不同,LinkedList是基于链表实现的,每个元素(节点)包含数据和指向下一个节点的引用。

二、作用

1、存储数据

可以存储任意类型的对象,并且每个元素都有一个前驱和后继。

2、动态扩容

不需要预先指定大小,"它会根据需要自动增加或减少节点。

3、提供方便的操作方法

比如添加、删除、修改、查找等,特别是在列表的开头和结尾操作特别高效。

三、使用场景

1.当你需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

2.当你不需要按索引快速访问元素时,因为LinkedList访问元素需要从头开始遍历

3.当你不需要线程安全的数据结构时。

四、语法及示例

1、创建LinkedList

除了String引用类型还有其他的基本数据类型对应的包装类(如下表)

【注意:LinkedList<E>,E只能是引用数据类型】

基本类型 引用类型
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
java 复制代码
import java.util.LinkedList; // 引入LinkedList类

LinkedList<String> list = new LinkedList<String>(); // 创建一个字符串类型的LinkedList

2、添加元素

java 复制代码
list.add("苹果"); // 在末尾添加一个元素
list.addFirst("香蕉"); // 在开头添加一个元素
list.addLast("橘子"); // 在末尾添加一个元素,与add()方法相同

3、获取元素

java 复制代码
String firstFruit = list.getFirst(); // 获取第一个元素
String lastFruit = list.getLast(); // 获取最后一个元素
String fruit = list.get(1); // 获取索引为1的元素

4、修改元素

java 复制代码
list.set(0, "葡萄"); // 修改索引为0的元素

5、删除元素

java 复制代码
list.removeFirst(); // 删除第一个元素
list.removeLast(); // 删除最后一个元素
list.remove(1); // 删除索引为1的元素
list.remove("苹果"); // 删除第一个遇到的"苹果"元素

6、获取/计算大小

java 复制代码
int size = list.size(); // 获取LinkedList的大小

7、遍历元素

java 复制代码
for (String fruit : list) {
    System.out.println(fruit); // 逐个输出元素
}

8、判断是否包含某个元素

java 复制代码
boolean contains = list.contains("苹果"); // 判断是否包含"苹果"元素

9、清空LinkedList

java 复制代码
list.clear(); // 清空LinkedList中的所有元素

五、完整实例

java 复制代码
import java.util.LinkedList;

public class Tets {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<String>();

        // 添加元素
        fruits.add("苹果");
        fruits.addFirst("香蕉");
        fruits.addLast("橘子");

        // 输出所有元素
        System.out.println("水果列表:" + fruits);

        // 修改元素
        fruits.set(1, "葡萄");

        // 删除元素
        fruits.removeFirst();
        fruits.remove("橘子");

        // 遍历元素
        System.out.println("修改后的水果列表:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }

        // 获取大小
        System.out.println("水果列表大小:" + fruits.size());
    }
}
相关推荐
一叶飘零_sweeeet10 分钟前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
艾伦~耶格尔37 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
yujkss1 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python
yzx9910131 小时前
小程序开发APP
开发语言·人工智能·python·yolo
一只叫煤球的猫1 小时前
🕰 一个案例带你彻底搞懂延迟双删
java·后端·面试
最初的↘那颗心1 小时前
Flink Stream API 源码走读 - print()
java·大数据·hadoop·flink·实时计算
啊阿狸不会拉杆2 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
JH30732 小时前
Maven的三种项目打包方式——pom,jar,war的区别
java·maven·jar
带刺的坐椅3 小时前
轻量级流程编排框架,Solon Flow v3.5.0 发布
java·solon·workflow·flow·solon-flow
David爱编程3 小时前
线程调度策略详解:时间片轮转 vs 优先级机制,面试常考!
java·后端