当前位置: 首页 > news >正文

Java list

在 Java 中,链表(LinkedList)是一个非常重要的数据结构,它可以动态地插入和删除元素,因此比数组更灵活。Java 提供了 LinkedList 类,该类实现了 List 接口,并且是基于双向链表实现的,因此支持高效的插入、删除操作,尤其是在列表的两端。

LinkedList 类位于 java.util 包中,提供了许多用于操作链表的方法。

1. 创建链表

import java.util.LinkedList;LinkedList<String> list = new LinkedList<>();

2. 链表常用方法及详细说明

2.1 add(E e)
  • 功能:将指定的元素添加到链表的末尾。
  • 返回类型boolean(对于 LinkedList,始终返回 true
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");  // 添加 "Apple" 到末尾
list.add("Banana");  // 添加 "Banana" 到末尾
System.out.println(list);  // 输出: [Apple, Banana]
2.2 addFirst(E e)
  • 功能:将指定的元素添加到链表的开头。
  • 返回类型void
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.addFirst("Orange");  // 将 "Orange" 添加到开头
System.out.println(list);  // 输出: [Orange, Apple]
2.3 addLast(E e)
  • 功能:将指定的元素添加到链表的末尾。实际上,这与 add() 方法相同,因为 LinkedList 是一个双向链表。
  • 返回类型void
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.addLast("Banana");  // 将 "Banana" 添加到末尾
System.out.println(list);  // 输出: [Apple, Banana]
2.4 remove()
  • 功能:移除并返回链表的第一个元素。如果链表为空,抛出 NoSuchElementException
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removed = list.remove();  // 移除并返回第一个元素 "Apple"
System.out.println(removed);  // 输出: Apple
System.out.println(list);  // 输出: [Banana]
2.5 removeFirst()
  • 功能:移除链表的第一个元素。如果链表为空,抛出 NoSuchElementException
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removedFirst = list.removeFirst();  // 移除第一个元素 "Apple"
System.out.println(removedFirst);  // 输出: Apple
System.out.println(list);  // 输出: [Banana]
2.6 removeLast()
  • 功能:移除链表的最后一个元素。如果链表为空,抛出 NoSuchElementException
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removedLast = list.removeLast();  // 移除最后一个元素 "Banana"
System.out.println(removedLast);  // 输出: Banana
System.out.println(list);  // 输出: [Apple]
2.7 get(int index)
  • 功能:返回链表中指定位置的元素(基于零索引)。
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String element = list.get(1);  // 获取索引为 1 的元素 "Banana"
System.out.println(element);  // 输出: Banana
2.8 set(int index, E element)
  • 功能:替换链表中指定位置的元素。
  • 返回类型E(返回被替换的元素)
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.set(1, "Orange");  // 将索引 1 的元素 "Banana" 替换为 "Orange"
System.out.println(list);  // 输出: [Apple, Orange]
2.9 remove(int index)
  • 功能:移除链表中指定位置的元素,并返回该元素。
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removedElement = list.remove(1);  // 移除索引为 1 的元素 "Banana"
System.out.println(removedElement);  // 输出: Banana
System.out.println(list);  // 输出: [Apple]
2.10 peek()
  • 功能:返回链表的第一个元素,但不移除它。如果链表为空,返回 null
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
String first = list.peek();  // 获取第一个元素 "Apple",但不移除
System.out.println(first);  // 输出: Apple
System.out.println(list);  // 输出: [Apple]
2.11 peekFirst()
  • 功能:返回链表的第一个元素,但不移除它。如果链表为空,返回 null
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
String first = list.peekFirst();  // 获取第一个元素 "Apple"
System.out.println(first);  // 输出: Apple
2.12 peekLast()
  • 功能:返回链表的最后一个元素,但不移除它。如果链表为空,返回 null
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String last = list.peekLast();  // 获取最后一个元素 "Banana"
System.out.println(last);  // 输出: Banana
2.13 clear()
  • 功能:移除链表中的所有元素。
  • 返回类型void
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.clear();  // 清空链表
System.out.println(list);  // 输出: []
2.14 contains(Object o)
  • 功能:检查链表中是否包含指定的元素。
  • 返回类型boolean
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
boolean containsApple = list.contains("Apple");  // true
boolean containsOrange = list.contains("Orange");  // false
System.out.println(containsApple);  // true
System.out.println(containsOrange);  // false
2.15 size()
  • 功能:返回链表中元素的个数。
  • 返回类型int
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
int size = list.size();  // 2
System.out.println(size);  // 2

3. 遍历链表

3.1 使用普通 for 循环遍历
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));
}
3.2 使用增强型 for 循环遍历(foreach)
for (String item : list) {System.out.println(item);
}
3.3 使用 Iterator 遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}

4. 总结

LinkedList 提供了灵活的方式来处理链表中的元素。以下是一些常用的方法:

  • add()addFirst()addLast():添加元素。
  • remove()removeFirst()removeLast():移除元素。
  • get()set():访问或修改元素。
  • peek()peekFirst()、`peekLast

相关文章:

Java list

在 Java 中&#xff0c;链表&#xff08;LinkedList&#xff09;是一个非常重要的数据结构&#xff0c;它可以动态地插入和删除元素&#xff0c;因此比数组更灵活。Java 提供了 LinkedList 类&#xff0c;该类实现了 List 接口&#xff0c;并且是基于双向链表实现的&#xff0c…...

MAC借助终端上传jar包到云服务器

前提&#xff1a;保证工程本地已打包完成&#xff1a;图中路径即为项目的target目录下已准备好的jar包 第一步&#xff1a;打开终端&#xff08;先不要连接自己的服务器&#xff09;&#xff0c;输入下面的上传命令&#xff1a; scp /path/to/local/app.jar username192.168.1…...

对原jar包解压后修改原class文件后重新打包为jar

文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class&#xff08;不好用-不推荐直接跳过&#xff09;提醒 参考资料-推荐阅读拓…...

YY币支付系统改源码(改良版本)

Nginx &#xff1a;1.20.1&#xff08;版本都可以&#xff09; MySQL&#xff1a;5.6.50&#xff08;兼容该版本其他不知道&#xff09; 简单优化服务器&#xff08;可不安装&#xff0c;看要求&#xff09; PHP安装扩展名称&#xff1a;fileinfo | opcache | imagemagick …...

【Swift】类型标注、类型安全和类型推断

文章目录 类型标注类型安全和类型推断什么是类型安全和类型推断为什么说Swift是一门安全语言类型安全带来的好处 类型标注 当你声明常量或者变量的时候可以加上类型标注&#xff08;type annotation&#xff09;&#xff0c;说明常量或者变量中要存储的值的类型。如果要添加类…...

06 —— Webpack优化—压缩过程

css代码提取后想要压缩 —— 使用css-minimizer-webpack-plugin插件 下载 css-minimizer-webpack-plugin 本地软件包 npm install css-minimizer-webpack-plugin --save-dev 配置 webpack.config.js 让webpack拥有该功能 const CssMinimizerPlugin require(css-minimizer-…...

uniapp页面样式和布局和nvue教程详解

uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px&#xff0c;一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准&#xff0c;750rpx恰好为屏幕宽度。屏幕变宽&#xff0c;rpx 实际显示效果会等比放大…...

单条推理转批量推理prompt

为了将单条推理程序改为批量推理程序&#xff0c;并实现您的要求&#xff0c;我们需要进行以下步骤&#xff1a; 输入的图片和视频都是随机从视频文件夹、图片文件夹挑选&#xff0c;组成输入对&#xff1a; 需要编写一个函数来读取指定文件夹中的所有图片和视频文件。 使用随…...

网络安全审计概述与分类

目录 网络安全审计概述等保五个级别对审计要求网络安全审计系统组成网络安全审计系统类型 网络安全审计概述 4A分别是认证、授权、账号、审计 网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储分析和利用的工作。 网络安全审计的作用在于建立“事后”…...

【已解决】“EndNote could not connect to the online sync service”问题的解决

本人不止一次在使用EndNote软件时遇到过“EndNote could not connect to the online sync service”这个问题。 过去遇到这个问题都是用这个方法来解决&#xff1a; 这个方法虽然能解决&#xff0c;但工程量太大&#xff0c;每次做完得歇半天身体才能缓过来。 后来再遇到该问…...

数据脱敏工具:基于 FFmpeg 的视频批量裁剪

在数据处理和隐私保护领域&#xff0c;数据脱敏是一项重要的任务&#xff0c;尤其是在处理包含敏感信息的视频数据时。本文介绍了一种使用 Python 和 FFmpeg 实现的视频批量裁剪工具&#xff0c;该工具可以将视频中的敏感区域裁剪掉&#xff0c;从而实现数据脱敏。通过使用 PyI…...

Debezium日常分享系列之:Debezium3版本Debezium connector for JDBC

Debezium日常分享系列之&#xff1a;Debezium3版本Debezium connector for JDBC 概述JDBC连接器的工作原理消费复杂的Debezium变更事件至少一次的传递多个任务数据和列类型映射主键处理删除模式幂等写入模式演化引用和大小写敏感性连接空闲超时数据类型映射部署Debezium JDBC连…...

「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解

本篇将详细介绍 Cangjie 中的浮点类型&#xff0c;包括浮点数的表示方法、精度、舍入与溢出处理、科学计数法表示、字面量的进制表示、常用运算、类型转换及应用场景&#xff0c;帮助开发者掌握浮点数的使用方法。 关键词 浮点类型表示精度与舍入溢出与下溢科学计数法类型转换…...

【UGUI】Unity 背包系统实现02:道具信息提示与显示

在游戏开发中&#xff0c;背包系统是一个常见的功能模块&#xff0c;用于管理玩家拾取的物品。本文将详细介绍如何在 Unity 中实现一个简单的背包系统&#xff0c;包括道具信息的提示和显示功能。我们将通过代码和场景搭建来逐步实现这一功能。 1. 功能需求清单 在实现背包系…...

掌握移动端性能测试利器:深入JMeter手机录制功能

引言 在当今移动互联网时代&#xff0c;应用程序的性能和用户体验至关重要。为了确保应用程序在不同设备和网络环境下都能稳定运行&#xff0c;性能测试成为了不可或缺的一环。Apache JMeter作为一款强大的开源性能测试工具&#xff0c;不仅支持传统的PC端性能测试&#xff0c…...

springboot010大学生入学审核系统的设计与实现(源码+包运行+LW+技术指导)

项目描述 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本站是一个B/S模式系统&#xff0c;采用Spring Boot框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c…...

Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行

一、前言说明 在地图应用中&#xff0c;有很多时候是需要断网环境中离线使用的&#xff0c;一般会采用两种做法&#xff0c;一种是只下载好离线瓦片地图&#xff0c;然后根据不同的缩放和经纬度坐标绘制瓦片。这种方式优点是任何地图都支持&#xff0c;只需要拿到瓦片即可&…...

从繁琐到优雅:用 PyTorch Lightning 简化深度学习项目开发

从繁琐到优雅&#xff1a;用 PyTorch Lightning 简化深度学习项目开发 在深度学习开发中&#xff0c;尤其是使用 PyTorch 时&#xff0c;我们常常需要编写大量样板代码来管理训练循环、验证流程和模型保存等任务。PyTorch Lightning 作为 PyTorch 的高级封装库&#xff0c;帮助…...

UE5 第一人称射击项目学习(完结)

这个项目几乎完结了。 也算我上手的第一个纯蓝图小项目。 现在只剩下缝缝补补了。 之前把子弹设计为蓝图&#xff0c;这里要引入C的面向对象思想&#xff0c;建立成员函数。 首先双击打开子弹的蓝图 这边就可以构造成员函数 写一个print your name 在这里生成成员函数后&am…...

Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计

概述 Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计,探索 RISC-V Vector1.0 的前沿技术&#xff0c;选择嘉楠科技的 Canmv K230D Zero 开发板。这款创新的开发板是由嘉楠科技与香蕉派开源社区联合设计研发&#xff0c;搭载了先进的勘智 K230D 芯片。 K230…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...