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

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

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

相关文章

【功能实现】bilibili顶部鼠标跟随效果怎么实现?

我们在电脑端打开b站首页时&#xff0c;总会被顶部【鼠标跟随】的效果所吸引&#xff0c;那他是如何实现的&#xff0c;来研究一下。 b站效果&#xff1a; 分析&#xff1a; 1.监听鼠标的位置&#xff0c;当悬浮到该模块时&#xff0c;图片会随鼠标移动 2.引入图片的样式是动…

WebStorm 安装配置(详细教程)

文章目录 一、简介二、优势三、下载四、安装4.1 开始安装4.2 选择安装路径4.3 安装选项4.4 选择开始菜单文件夹4.5 安装完成 五、常用插件5.1 括号插件&#xff08;Rainbow Brackets&#xff09;5.2 翻译插件&#xff08;Translation&#xff09;5.3 代码缩略图&#xff08;Cod…

[C++]:C++11(三)

1. 可变参数模版 1.1 概念 可变参数模板允许我们定义能接受可变数目模板参数的模板。简单来说&#xff0c;就好比一个函数可以接受任意个数的实际参数一样&#xff0c;可变参数模板能应对不同数量的模板参数情况。比如&#xff0c;我们可以有一个模板类或者模板函数&#xff…

【Nginx从入门到精通】05-安装部署-虚拟机不能上网简单排错

文章目录 总结1、排查步骤 一、排查&#xff1a;Vmware网关二、排查&#xff1a;ipStage 1 &#xff1a;ping 127.0.0.1Stage 2 &#xff1a;ping 宿主机ipStage 3 &#xff1a;ping 网关 失败原因解决方案Stage 4 &#xff1a;ping qq.com 总结 1、排查步骤 Vmware中网关是否…

InstantStyle容器构建指南

一、介绍 InstantStyle 是一个由小红书的 InstantX 团队开发并推出的图像风格迁移框架&#xff0c;它专注于解决图像生成中的风格化问题&#xff0c;旨在生成与参考图像风格一致的图像。以下是关于 InstantStyle 的详细介绍&#xff1a; 1.技术特点 风格与内容的有效分离 &a…

卷积神经网络各层介绍

目录 1 卷积层 2 BN层 3 激活层 3.1 ReLU&#xff08;Rectified Linear Unit&#xff09; 3.2 sigmoid 3.3 tanh&#xff08;双曲正切&#xff09; 3.4 Softmax 4 池化层 5 全连接层 6 模型例子 1 卷积层 卷积是使用一个卷积核&#xff08;滤波器&#xff09;对矩阵进…

Elastic 和 Red Hat:加速公共部门 AI 和机器学习计划

作者&#xff1a;来自 Elastic Michael Smith 随着公共部门组织适应数据的指数级增长&#xff0c;迫切需要强大、适应性强的解决方案来管理和处理大型复杂数据集。人工智能 (Artificial intelligence - AI) 和机器学习 (machine learning - ML) 已成为政府机构将数据转化为可操…

SAP B1 登陆报错解决方案 - 系统架构目录服务器选择

背景 登录时出现如下报错&#xff0c;报错显示为【系统架构目录服务器选择】 强行登录会发现过往账套都不见了 出现原因 出于各种原因在开机时没有把 SAP 所有的服务成功启动&#xff08;上一次启动科学上网后全局代理没关干净之类的&#xff09;。 解决方案 关机几分钟重启…

基于深度卷积神经网络(CNN)模型的图像着色研究与应用系统实现

1.摘要 许多历史照片都是黑白的&#xff0c;通过颜色化可以恢复这些照片的历史感和真实感&#xff0c;使人们更好地理解和感受历史事件。随着深度学习技术的发展&#xff0c;特别是卷积神经网络和自监督学习的兴起&#xff0c;研究人员提出了新的方法来解决这些问题。通过将颜色…

【CVE-2024-9413】SCP-Firmware漏洞:安全通告

安全之安全(security)博客目录导读 目录 一、概述 二、修订历史 三、CVE根因分析 四、问题修复解决 一、概述 在SCP固件中发现了一个漏洞&#xff0c;如果利用该漏洞&#xff0c;可能会允许应用处理器&#xff08;AP&#xff09;在系统控制处理器&#xff08;SCP&#xf…

Oracle 19C 安装RAC磁盘投票失败

ORACLE 19C 安装RAC第二个节点报错&#xff0c;没有找到足够的 voting 文件&#xff08;投票磁盘&#xff09; 1、磁盘投票失败分析 1.1、02节点报错日志 CRS-4123: Starting Oracle High Availability Services-managed resources CRS-2672: Attempting to start ora.mdnsd…

【Maven】IDEA创建Maven项目 Maven配置

文章目录 简介配置环境变量配置仓库测试安装 IDEA创建项目pom.xml 简介 Maven 是一个非常流行的项目管理和构建自动化工具&#xff0c;主要应用于 Java 项目的构建、依赖管理和项目信息管理。它是由 Apache 软件基金会维护的开源项目。Maven 的设计理念是通过一个项目对象模型…

vue3:使用插件递归组件

vue3:使用插件递归组件 首先安装插件 npm i unplugin-vue-define-optionsvite.config.ts 配置插件 // vite.config.ts// 引入 unplugin-vue-define-options import DefineOptions from "unplugin-vue-define-options"; export default defineConfig({// 注册插件 De…

开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 本文主要介绍如何在Windows系统电脑使用整合包一键部署开源TTS语音克隆神器GPT-SoVITS&#xff0c;并结合cpolar内网穿透工…

Keil+VSCode优化开发体验

目录 一、引言 二、详细步骤 1、编译器准备 2、安装相应插件 2.1 安装C/C插件 2.2 安装Keil相关插件 3、添加keil环境变量 4、加载keil工程文件 5、VSCode中成功添加工程文件后可能出现的问题 5.1 编码不一致问题 6、在VSCode中进行编译工程以及烧录程序 7、效果展示…

Llama模型文件介绍

文章目录 概要文件组成 概要 在使用 LLaMA&#xff08;Large Language Model Meta AI&#xff09;权重时&#xff0c;通常会涉及到与模型权重存储和加载相关的文件。这些文件通常是以二进制格式存储的&#xff0c;具有特定的结构来支持高效的模型操作。以下以Llama-7B为例&…

Spring Web入门练习

加法计算器 约定前后端交互接⼝ 约定 "前后端交互接⼝" 是进⾏ Web 开发中的关键环节. 接⼝⼜叫 API&#xff08;Application Programming Interface), 我们⼀般讲到接⼝或者 API&#xff0c;指的都是同⼀个东西. 是指应⽤程序对外提供的服务的描述, ⽤于交换信息…

Easyexcel(5-自定义列宽)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09;Easyexcel&#xff08;4-模板文件&#xff09;Easyexcel&#xff08;5-自定义列宽&#xff09; 注解 ColumnWidth Data…

FIFO和LRU算法实现操作系统中主存管理

FIFO&#xff0c;用数组实现 1和2都是使用nextReplace实现新页面位置的更新 1、不精确时间&#xff1a;用ctime输出运行时间都是0.00秒 #include <iostream> #include <iomanip> #include<ctime>//用于计算时间 using namespace std;// 页访问顺序 int pa…

Unity3d场景童话梦幻卡通Q版城镇建筑植物山石3D模型游戏美术素材

注明&#xff1a;网络素材&#xff0c;仅供学习使用&#xff01; https://download.csdn.net/download/elineSea/90017291