Java集合 LinkedList

目录

  • LinkedList
  • 实例

LinkedList

LinkedList是Java中的一个重要的数据结构,它实现了List接口,提供了链表数据结构的实现。LinkedList类中包含了各种常用的链表操作,如添加、删除、查找等。

LinkedList的特点是元素可以动态地添加到链表的任意位置,并且链表中的元素可以按照它们被添加的顺序来遍历。由于LinkedList是基于链表实现的,因此它具有以下特点:

  1. 插入和删除操作可以在任何位置进行,时间复杂度为O(1)。
  2. 访问元素的操作可以在任何位置进行,时间复杂度为O(n)。
  3. 链表中的元素在内存中不是连续存储的,因此无法通过下标直接访问元素。

下面是一个简单的示例,演示如何使用LinkedList类:

import java.util.LinkedList;public class LinkedListExample {public static void main(String[] args) {// 创建一个新的LinkedList对象LinkedList<String> linkedList = new LinkedList<>();// 添加元素到链表末尾linkedList.add("Element 1");linkedList.add("Element 2");linkedList.add("Element 3");// 在指定位置插入元素linkedList.add(1, "Element 4");// 遍历链表并打印元素for (String element : linkedList) {System.out.println(element);}// 删除指定位置的元素linkedList.remove(1);// 遍历链表并打印元素for (String element : linkedList) {System.out.println(element);}}
}

输出:

Element 1
Element 4
Element 2
Element 3

实例

假设我们有一个学生名单,每个学生有一个名字和学号。我们想要创建一个可以添加、删除和查找学生的链表。

  1. 首先,我们需要创建一个Student类,表示每个学生:
public class Student {  private String name;  private int studentId;  public Student(String name, int studentId) {  this.name = name;  this.studentId = studentId;  }  public String getName() {  return name;  }  public int getStudentId() {  return studentId;  }  
}
  1. 接下来,我们可以创建一个LinkedList的实例,并添加一些学生:
import java.util.LinkedList;  public class Main {  public static void main(String[] args) {  // 创建一个新的LinkedList对象  LinkedList<Student> studentList = new LinkedList<>();  // 添加学生到链表末尾  studentList.add(new Student("Alice", 1));  studentList.add(new Student("Bob", 2));  studentList.add(new Student("Charlie", 3));  studentList.add(new Student("David", 4));  // 遍历链表并打印学生信息  for (Student student : studentList) {  System.out.println("Name: " + student.getName() + ", Student ID: " + student.getStudentId());  }  }  
}
  • 输出:
    在这里插入图片描述
  1. 现在,如果我们想在链表的特定位置插入一个新学生,我们可以使用add方法:
// 在指定位置插入新学生(位置为2)  
studentList.add(2, new Student("Eve", 5));

在这里插入图片描述

  1. 在Java的LinkedList类中,没有直接提供删除指定索引的学生的方法。但是,您可以通过以下步骤实现该功能:

    使用indexOf方法找到要删除学生的索引。
    使用remove方法删除该索引处的元素。

        // 要删除的学号  int studentIdToRemove = 3;  // 查找要删除学生的索引  int index = -1;  for (int i = 0; i < studentList.size(); i++) {  Student student = studentList.get(i);  if (student.getStudentId() == studentIdToRemove) {  index = i;  break;  }  }  // 检查是否找到了要删除的学生  if (index != -1) {  // 删除该索引处的元素(学生)  studentList.remove(index);  System.out.println("学生 " + studentIdToRemove + " 已被删除。");  } else {  System.out.println("未找到学生 " + studentIdToRemove + "。");  } 

在这里插入图片描述

  1. 根据学号查找学生,你可以使用Java中的 LinkedList 类的 indexOf 方法来找到具有特定学号的学生。
// 要查询的学号  int studentIdToFind = 5;  // 查找具有指定学号的学生并输出其名字  Student foundStudent = null;  for (Student student : studentList) {  if (student.getStudentId() == studentIdToFind) {  foundStudent = student;  break;  }  }  if (foundStudent != null) {  System.out.println("找到了学生: " + foundStudent.getName() + ", 学号: " + foundStudent.getStudentId());  } else {  System.out.println("未找到学生 " + studentIdToFind + "。");  }  

在这里插入图片描述

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

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

相关文章

关于创建vue项目报错command failed: npm install --loglevel error

一、首先 在这个目录下有个文件叫.vuerc 二、其次 进去之后把里面的"useTaobaoRegistry": false,修改下&#xff0c;我之前是true&#xff0c;后来改成了false才成功。

【数据结构】11 堆栈(顺序存储和链式存储)

定义 可认为是具有一定约束的线性表&#xff0c;插入和删除操作都在一个称为栈顶的端点位置。也叫后入先出表&#xff08;LIFO&#xff09; 类型名称&#xff1a;堆栈&#xff08;STACK&#xff09; 数据对象集&#xff1a; 一个有0个或者多个元素的有穷线性表。 操作集&#…

单片机与外设的交互

单片机与外设的交互是嵌入式系统中非常重要的一个基础知识点。单片机是一个集成在同一芯片上的中央处理器、存储器和输入/输出接口,它可以根据用户编写的程序与各种外部设备即外设进行交互。单片机与外设之间的交互主要通过单片机上的输入/输出口(I/O口)来实现。 I/O口的工作原…

一个适用于后渗透期间的信息收集工具

介绍 Pillager是一个适用于后渗透期间的信息收集工具&#xff0c;可以收集目标机器上敏感信息&#xff0c;方便下一步渗透工作的进行。 支持 注&#xff1a;✅表示经过测试&#xff0c;&#x1f6a7;表示理论上支持但未经测试&#xff0c;❌表示无此功能或不支持 后续将会陆续…

CSP-202006-1-线性分类器

CSP-202006-1-线性分类器 解题思路 通过比较第一个训练数据点的类别和直线函数值的正负来确定标准类别和标准函数值的正负。循环遍历训练数据中的每个点&#xff0c;计算直线函数值并与标准函数值比较&#xff0c;以确定该点所在的类别。 如果当前点的类别与标准类别一致&…

Lua: 一门轻量级、高效的脚本语言

Lua: 一门轻量级、高效的脚本语言 在当今软件开发的领域中&#xff0c;寻找一门既灵活又高效的脚本语言&#xff0c;一直是开发者们追求的目标。Lua作为一门小巧、高效、可嵌入的脚本语言&#xff0c;已经成为了众多开发者的首选之一。无论是游戏开发、嵌入式系统、Web 开发还是…

ncc匹配提速总结

我们ncc最原始的匹配方法是&#xff1a;学习模板w*h个像素都要带入ncc公式计算 第一种提速&#xff0c;学习模板是w*h&#xff0c;而我们支取其中的w/2*h/2,匹配窗口同理&#xff0c;计算量只有1/4。 另外一种因为ncc是线性匹配&#xff0c;我们在这上面也做了文章&#xff0…

《UE5_C++多人TPS完整教程》学习笔记2 ——《P3 多人游戏概念(Multiplayer Concept)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P3 多人游戏概念&#xff08;Multiplayer Concept&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译…

如何把手机平板变为电脑的屏幕

文章目录 安装软件运行效果结尾 本文首发地址 https://h89.cn/archives/181.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 闲置的手机平板、触屏音箱等&#xff0c;均可作为电脑的扩展屏&#xff0c;为电脑增加一块显示屏&#xff0c;本文介绍如何使用免费的软件s…

DS Wannabe之5-AM Project: DS 30day int prep day12

Q1. Where is the confusion matrix used? Which module would you use to show it? 混淆矩阵 混淆矩阵常用于评估分类模型的性能&#xff0c;特别是在二分类或多分类问题中。它展示了实际类别与模型预测类别之间的关系。在Python中&#xff0c;可以使用sklearn.metrics模块…

代码随想录算法训练营DAY13 | 栈与队列 (3)

一、LeetCode 239 滑动窗口最大值 题目链接&#xff1a;239.滑动窗口最大值https://leetcode.cn/problems/sliding-window-maximum/ 思路&#xff1a;使用单调队列&#xff0c;只保存窗口中可能存在的最大值&#xff0c;从而降低时间复杂度。 public class MyQueue{Deque<I…

【闲谈】初识深度学习

在过去的十年中&#xff0c;深度学习彻底改变了我们处理数据和解决复杂问题的方式。从图像识别到自然语言处理&#xff0c;再到游戏玩法&#xff0c;深度学习的应用广泛且深入。本文将探讨深度学习的基础知识、关键技术以及最新的研究进展&#xff0c;为读者提供一个全面的视角…

第三节 zookeeper基础应用与实战2

目录 1. Watch事件监听 1.1 一次性监听方式&#xff1a;Watcher 1.2 Curator事件监听机制 2. 事务&异步操作演示 2.1 事务演示 2.2 异步操作 3. Zookeeper权限控制 3.1 zk权限控制介绍 3.2 Scheme 权限模式 3.3 ID 授权对象 3.4 Permission权限类型 3.5 在控制台…

Linux中孤儿/僵尸进程/wait/waitpid函数

孤儿进程&#xff1a; 概念&#xff1a;若子进程的父进程已经死掉&#xff0c;而子进程还存活着&#xff0c;这个进程就成了孤儿进程。 为了保证每个进程都有一个父进程&#xff0c;孤儿进程会被init进程领养&#xff0c;init进程成为了孤儿进程的养父进程&#xff0c;当孤儿…

DataBinding简易入门

简介 DataBinding是Google在18年推出的数据绑定框架&#xff0c;采用了MVVM模式来降低各模块之间代码的耦合度&#xff0c;使得整体代码逻辑设计更加清晰。众所周知&#xff0c;MVVM类似于MVC&#xff0c;主要目的是为分离View&#xff08;视图&#xff09;和Model&#xff08…

MATLAB知识点:isempty函数(★★★★☆)判断数组是否为空

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第…

OpenCV入门:图像处理的基石

在数字图像处理领域&#xff0c;OpenCV&#xff08;开源计算机视觉库&#xff09;是一个不可或缺的工具。它包含了一系列强大的算法和函数&#xff0c;使得开发者可以轻松地处理图像和视频数据。本文将带你走进OpenCV的世界&#xff0c;了解其基本概念和常见应用。 1. OpenCV简…

uniapp微信小程序开发踩坑日记:Pinia持久化

如果你使用过Pinia&#xff0c;那你应该知道Pinia持久化插件&#xff1a;https://prazdevs.github.io/pinia-plugin-persistedstate/zh/ 但由于官方文档提供的说明并不是针对小程序开发&#xff0c;所以我们在使用这个插件实现uniapp小程序开发中Pinia持久化会出现问题 我在C…

《统计学简易速速上手小册》第3章:概率分布与抽样技术(2024 最新版)

文章目录 3.1 重要的概率分布3.1.1 基础知识3.1.2 主要案例&#xff1a;顾客到访分析3.1.3 拓展案例 1&#xff1a;产品缺陷率分析3.1.4 拓展案例 2&#xff1a;日销售额预测 3.2 抽样方法与推断3.2.1 基础知识3.2.2 主要案例&#xff1a;顾客满意度调查3.2.2 拓展案例 1&#…

蓝桥杯每日一题------背包问题(二)

前言 本次讲解背包问题的一些延申问题&#xff0c;新的知识点主要涉及到二进制优化&#xff0c;单调队列优化DP&#xff0c;树形DP等。 多重背包 原始做法 多重背包的题意处在01背包和完全背包之间&#xff0c;因为对于每一个物品它规定了可选的个数&#xff0c;那么可以考虑…