java中链表LinkedList

news/2025/1/31 1:25:23/文章来源:https://www.cnblogs.com/ishoulgodo/p/18692163

复习一下:

ArrayList在java哪一个包中?

ArrayList在java --> util包中
import java.util.ArrayList;

LinkedList

LinkedList: 可以在集合前面增加数据,也可以在后面增加数据,还可以在数据之间增加数据。

LinkedList 新增add

package goodStudy;
//ArrayList在java--> util包中
import java.util.ArrayList;
// LinkedList也在java--> util包中
import java.util.LinkedList;public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");System.out.println("数据:"+ list);}
}

LinkedList获取第0项的值getFirst和get

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");// 数据:第1项// 数据:第1项System.out.println("数据:"+ list.getFirst());System.out.println("数据:"+ list.get(0));}
}

LinkedList.addFirst()添加到最前面

addFirst: 用于在链表的开头(也就是第一个位置)插入一个指定的元素。这个操作会使得链表的大小增加1。
该方法没有返回值
LinkedList list = new LinkedList();
list.add("第1项");
// 会把它添加到最前面
list.addFirst("第xx项");
// 输出的是: [第xx项, 第1项]
System.out.println(list);

LinkedList.add()在指定位置新增一项

list.add("第1项");
list.add("今天在上班");
list.addFirst("第xx项");
list.add(1, "又新增了一项");
System.out.println(list);
输出来的是: [第xx项, 又新增了一项, 第1项, 今天在上班]

LinkedList.addLast()添加到最后面

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.addLast("最后一个严肃");list.add("嘿嘿");// 输出的值是: [第1项, 今天在上班, 最后一个严肃, 嘿嘿]System.out.println(list);}
}

LinkedList.get()获取指定位置的值

package goodStudy;
// LinkedList也在java--> util包中
import java.util.LinkedList;
public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.addFirst("第xx项");list.add(1, "又新增了一项");// 输出的值是: 又新增了一项System.out.println(list.get(1));}
}

特殊for循环

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.addFirst("第xx项");list.add(1, "又新增了一项");for(Object obj:list){System.out.println("当前这一项:"+ obj);}}
}

修改数据 set

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.set(1, "马上要下班了");System.out.println("数据:"+ list);}
}

删除数据 remove("删除某一项"),成功返回true,失败返回false

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");Boolean flag = list.remove("今天在上班");// trueSystem.out.println("flag:"+ flag);// ["第1项"]System.out.println("数据:"+ list);}
}

删除第1项LinkedList.remove() 删除第1项,并返回删除的元素

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");// 删除第1项,并返回删除的元素System.out.println(list.remove());System.out.println(list);}
}

LinkedList.removeFirst() 删除第一个元素

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");// 删除第1项,并返回删除的元素System.out.println(list.removeFirst());System.out.println(list);}
}

LinkedList.removeLast() 删除最后一个元素

LinkedList.remove(2)删除下标为2的元素

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.add("第3项");// 删除下标为1的元素list.remove(1);// 输出的是 [第1项, 第3项]System.out.println(list);}
}

LinkedList.addAll(Collection) 将指定集合中的所有元素添加到链表的末尾。

addAll: 方法用于将指定集合中的所有元素添加到链表的末尾。
如果指定的集合为 null,则抛出 NullPointerException。
public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");LinkedList newList = new LinkedList();newList.add("11");newList.add("22");newList.addAll(list);// 输出:[11, 22, 第1项, 今天在上班]System.out.println(newList);}
}

LinkedList.push()将元素添加到链表的头部

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.add("第3项");list.push("添加到头部");// 输出的值是:[添加到头部, 第1项, 今天在上班, 第3项]System.out.println(list);}
}

LinkedList.pop()从链表的头部移除元素并返回第一个元素

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.add("第3项");// 输出的值是: 第1项System.out.println(list.pop());// 输出的值是:[今天在上班, 第3项]System.out.println(list);}
}

LinkedList.size()获取链表长度

LinkedList.isEmpty()判断链表是否为空,如果是空,返回true;否则返回false

LinkedList.clear()清空链表,没有返回值

LinkedList.clear()清空链表
如果在调用 clear() 方法之前链表是空的,那么调用该方法后链表仍然为空,且不会发生任何异常
没有返回值

LinkedList.contains()判断链表中是否包含某元素,是的话返回true,否则返回false

public class goodStudy{public static void main(String[] args) {LinkedList list = new LinkedList();list.add("第1项");list.add("今天在上班");list.add("第3项");// 输出的值是:trueSystem.out.println(list.contains("今天在上班"));}
}

LinkedList.element()获取第一个元素

LinkedList.indexOf() 获取元素第一次出现的位置

LinkedList.lastIndexOf() 获取元素最后一次出现的位置

发现的一点规律

链表LinkedList 和 ArrayList很多方法都是一样的。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876261.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-1-21-简易登录界面的实现

前端 我们需要两个输入框,一个登录按钮,像这样(为了好看,用的是element-ui的组件,使用的话需要先去下载文件引用)代码如下系统<el-form ref="form" :model="user" label-width="80px"><el-form-item label="用户名">…

SSM

Spring Framework系统架构学习路线一、核心概念 代码书写现状:耦合度偏高 解决方案:使用对象时,在程序中不要主动使用new产生对象,转换为有外部提供对象 IOC(Inversion of Control)控制反转:对象的创建控制权由程序转移到外部,这种思想称为控制反转 目标:充分解耦 Spr…

2025寒假集训

1.斜率优化dp 以例题P3628 [APIO2010] 特别行动队 设\(f[i]\)为以\(i\)结尾最大的修正战斗力 易得状态转移方程\(f[i]=max(f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c)\) 其中\(1 \le j \le i-1\) 把方程化简得:\(f[i]=f[j]+a*s[i]^2-2*a*s[i]*s[j]+a*s[j]^2+b*s[i]-b*s[j]+c\) 将含…

REST风格 -2025/1/20

REST风格入门 package com.stdu.controller;import com.stdu.domain.Book; import com.stdu.domain.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*;@Controller public class BookController {@RequestMapping(v…

manim边学边做--时针方向变换

今天介绍的两个动画类ClockwiseTransform和CounterclockwiseTransform, 用于将某一个元素按照时针方向变换为另一个对象。ClockwiseTransform:将一个对象以顺时针方向变换成另一个对象 CounterclockwiseTransform:将一个对象以逆时针方向变换成另一个对象1. 动画概述 1.1. C…

ADALM-Pluto修改芯片类型为AD9364模式

ADALM-Pluto 使用芯片AD9363(325 MHz - 3.8 GHz),但可切换至 AD9364(70 MHz - 6 GHz)模式,此篇随笔将采用串口调试的方式将 Pluto 设置为 AD9364 芯片,进而提高接收信号频率范围,已包含FM广播信号的频率。ADALM-Pluto 使用芯片AD9363(325 MHz - 3.8 GHz),但可切换至…

java基础Day8 异常

一、简单分类 三种类型的异常Exception:检查性异常:最具代表性的检查性异常是用户错误或者问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。 运行时异常:运行时异常是可能被程序员避免的异常。与…

《CPython Internals》读后感

一、 为什么选择这本书? Python 是本人工作中最常用的开发语言,为了加深对 Python 的理解,更好的掌握 Python 这门语言,所以想对 Python 解释器有所了解,看看是怎么使用C语言来实现Python的,以期达到对 Python语言的掌握达到精通的程度,。 关于 Python 解释器的书不多—…

文档智能扫描,提升无纸化办公效率

随着无纸化办公的推广和移动设备的普及,用户迫切需要将纸质文档快速、准确地转换成电子格式,以提高工作效率和信息管理的便捷性。同时,用户将文档扫描成电子版后,可以自行通过加密和访问控制提高电子文档的安全性,以满足法律和合规要求。 HarmonyOS SDK 场景化视觉服务(V…

Grafana快速入门指南上篇

一.Grafana安装 1.下载grafana我们课堂实验均以Grafana 9.X版本实验的,更高版也可以实验,但是部分插件可能兼容性不太友好。下载地址:https://grafana.com/grafana/download/9.5.212.安装grafana apt-get install -y adduser libfontconfig1 muslwget https://dl.grafana.com…