Java集合框架之List接口详解
目录
一、List接口概述
二、List接口常见实现类
三、List接口特有方法:
1.元素操作
2. 查找元素位置
3. 子列表与不可变列表
四、List特有迭代器:ListIterator
1.特有的迭代方式
2.ListIterator接口中的常用方法:
⑴.void add(E e):在光标位置插入元素。(会移动光标)
⑵.boolean hasPrevious(); 判断当前光标指向位置的上一个位置是否存在元素。(只获取不移动)
⑶.E previous(); 获取上一个元素(将光标向上移动一位,然后将光标指向的元素返回)(会移动光标)
⑷.int nextIndex(); 获取光标指向的那个位置的下标(只获取不移动)
⑸.void set(E e);
五、List接口使用Comparator排序
1.回顾数组中自定义类型是如何排序的?
2.List集合的排序
⑴对Comparator提供一个实现类,并重写compare方法来指定比较规则。
⑵不单独写比较器,使用匿名内部类省代码
一、List接口概述
List 是Java集合框架中最重要的接口之一,继承自 Collection
接口,用于存储有序、可重复的元素集合。其核心特点包括:
有序性:元素按插入顺序存储,每个元素都有对应的下标(从
0
开始递增)。可重复性:允许存储相同的元素(如多次添加
"Java"
)。基于索引的操作:支持通过下标直接访问、插入、修改和删除元素。
二、List接口常见实现类
ArrayList
:基于动态数组实现,查询效率高(时间复杂度O(1)
),增删效率较低(需移动元素)。
LinkedList
:基于双向链表实现,增删效率高(时间复杂度O(1)
),查询效率较低(需遍历链表)。
Vector
:线程安全的动态数组,性能较低(方法使用synchronized
修饰)。
Stack
:继承自Vector
,实现栈结构(后进先出)。
List<String> list = new ArrayList<>();
list.add(0, "Java"); // 插入到第一个位置
三、List接口特有方法:
(在Collection和SequencedCollection中没有的方法,只适合List家族使用的方法,这些方法都和下标有关系。)
1.元素操作
void add(int index, E element)
在指定下标插入元素,原位置及后续元素后移。
List<String> list = new ArrayList<>();
list.add(0, "Java"); // 插入到第一个位置
E set(int index, E element)
修改指定下标处的元素,返回被替换的旧值。
String oldValue = list.set(0, "Python"); // 将第一个元素改为"Python"
E get(int index)
根据下标获取元素,支持通过下标遍历集合。
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));
}
E remove(int index)
删除指定下标处的元素,返回被删除的元素。
String removed = list.remove(0); // 删除第一个元素
2. 查找元素位置
-
int indexOf(Object o)
返回元素第一次出现的下标,未找到返回-1
。int firstIndex = list.indexOf("Java");
-
int lastIndexOf(Object o)
返回元素最后一次出现的下标。int lastIndex = list.lastIndexOf("Java");
3. 子列表与不可变列表
-
List<E> subList(int fromIndex, int toIndex)
截取子列表(范围[fromIndex, toIndex)
),对子列表的修改会影响原集合。List<String> subList = list.subList(1, 3); // 获取下标1到2的元素
-
static List<E> of(E... elements)可变长参数
生成一个不可修改的列表(Java 9+)。List<String> immutableList = List.of("A", "B", "C"); // immutableList.add("D"); // 抛出UnsupportedOperationException
四、List特有迭代器:ListIterator
1.特有的迭代方式
ListIterator<E> listIterator(); 获取List集合特有的迭代器(该迭代器功能更加强大,但只适合于List集合使用)
ListIterator<E> listIterator(int index); 从列表中的指定位置开始,返回列表中元素的列表迭代器
示例代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;public class ListIteratorTest {public static void main(String[] args) {//创建集合ListList<String> names=new ArrayList<>();//添加元素names.add("zhangsan");names.add("lisi");names.add("wangwu");names.add("zhaoliu");//使用普通的通用迭代器遍历Iterator<String> it=names.iterator();while(it.hasNext()){String name=it.next();System.out.println(name);}//使用ListIterator进行遍历ListIterator<String> li = names.listIterator();while (li.hasNext()) {String name = li.next();System.out.println(name);}}
}
运行结果:
2.ListIterator接口中的常用方法:
相关文章:

Java集合框架之List接口详解
目录 一、List接口概述 二、List接口常见实现类 三、List接口特有方法: 1.元素操作 2. 查找元素位置 3. 子列表与不可变列表 四、List特有迭代器:ListIterator 1.特有的迭代方式 2.ListIterator接口中的常用方法: ⑴.void add(E e):在光标位置插入元素。(会移动…...
oracle apex post接口
日常记录 使用到了apex_json方式接收 、、、1 首先,接口通过body传递过来,成功接收到, 数据格式为 JSON_OBJECT_T l_json : JSON_OBJECT_T.parse(:body); 这里我用参数接收到 然后 里面是包含了 "data" 我用 继续接收到这个 l…...

【数据挖掘】--算法
【数据挖掘】--算法 目录:1. 缺失值和数值属性处理1缺失值处理: 2. 用于文档分类的朴素贝叶斯3. 分治法:建立决策树4. 覆盖算法建立规则5. 挖掘关联规则6. 线性模型有效寻找最近邻暴力搜索(Brute-Force Search)kd树&am…...

halcon机器视觉深度学习对象检测,物体检测
目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本, 然后训练模型,导出模型文件 这个是模型 mod…...

英文字体:极简现代浓缩未来派科技海报标题排版无衬线字体 PODIUM Sharp Font
PODIUM Sharp 是 2012 年设计的 DUDU 字体的扩展版本。多年后,我决定通过添加新的母版和粗细来重建和开发这种字体。最后,PODIUM Sharp 由 234 种款式组成:从超压缩发际线到超扩展重度。 这个项目的主要目的是在我在旧波兰标本中发现的不同模…...
Java中JDK、JRE,JVM之间的关系
Java中的JDK、JRE和JVM是三个核心概念,其关系可概括为JDK > JRE > JVM,具体如下: 一、定义与作用 JDK(Java Development Kit) 定义:Java开发工具包,用于开发和编译Java程序。包含内容&…...

elasticsearch在windows上的配置
写在最前面: 上资源 第一步 解压: 第二步 配置两个环境变量 第三步 如果是其他资源需要将标蓝的文件中的内容加一句 xpack.security.enabled: false 不同版本的yaml文件可能配置不同,末尾加这个 xpack.security.enabled: true打开bin目…...

vscode 配置 Copilot 提示GHE.com连接失败
步骤一:打开设置并进入 settings.json 点击菜单栏中的 “文件” -> “首选项” -> “设置”。 在搜索设置栏中输入 “Copilot: Advanced”。 点击搜索结果下方的 “在 settings.json 中编辑” 链接,这会打开 settings.json 文件。 步骤二&#…...

Pycharm+CodeGPT+Ollama+Deepseek
首先,体验截图: 接着: 1、下载Ollama: Download Ollama on macOS 2、下载模型 以1.5b为例,打开命令行,输入: ollama run deepseek-r1:1.5b 3、Pycharm安装Code GPT插件 打开PyCharm,找到文…...
Unreal5从入门到精通之在编辑器中更新 UserWidgets
前言 在虚幻中创建越来越复杂和灵活的 UserWidget 蓝图时,一个问题是它们在编辑器中的外观与它们在游戏中的最终外观可能有很大不同。 库存面板示例 假设你想创建一个通用的库存显示小部件。我们可以在整个 UI 中使用它,无论我们需要在哪里显示某些内容。 标题,描述所显示…...

C语言修炼手册
目录 第一章 分支与循环语句 1. 悬空else问题 2. 循环输入问题 3. getchar缓冲区溢出问题 4. goto语句坑点 第二章 函数 1.为什么要有库函数 2.函数嵌套 3.链式访问 4.回调函数 5.函数递归 6.字符转换函数 7.模拟实现字符串拷贝strcpy 8.模拟实现字符串的长度s…...
Linux部署ollama
1、下载ollama wget https://github.com/ollama/ollama/releases/download/v0.1.47/ollama-linux-amd64或者curl -fsSL https://ollama.com/install.sh | sh2、安装ollama install ollama-linux-amd64 /usr/local/bin/ollama3、启动ollama vi /etc/systemd/system/ollama.se…...

跨语言语义理解与生成:多语言预训练方法及一致性优化策略
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

最新华为 HCIP-Datacom(H12-821)2025.2.20
最新 HCIP-Datacom(H12-821),完整题库请扫描上方二维码访问。 如图所示为某OSPF网络,已知R1和R2已,成功建立邻接关系,现一工程师在R2上配置了图中命令。那么在R2上查看LSDB时,可能存在以下哪些LSA? A&…...

TS语言自定义脚手架
初始化 新建文件夹初始化命令 npm init -ytsc --initnpm i types/nodenpm i typescript# 处理别名npm i -D tsc-alias -y 表示选项都为yes 安装ts相关依赖 新建相关文件 bin 文件夹 src文件夹 commands 文件夹 (命令 utils 文件夹 (封装方法) index.t…...
深度学习-122-大语言模型LLM之基于langchian自定义国内联网查询工具并创建智能代理
文章目录 1 访问百度1.1 百度检索1.2 库baidusearch2 自定义工具@tool装饰器3 使用工具创建智能代理3.1 语言模型与工具结合3.2 方式一create_react_agent3.3 方式二create_tool_calling_agent3.4 给代理添加记忆4 参考附录1 访问百度 1.1 百度检索 from bs4 import Beautifu…...
Docker Desktop 入门教学
引言 Docker Desktop 是 Docker 官方为开发者提供的桌面应用程序,支持在 Windows 和 macOS 上轻松构建、运行和共享容器化应用程序。它集成了 Docker 引擎、Docker CLI 客户端以及 Docker Compose 等工具,方便您在本地开发和测试。 一、快速安装 1. 系…...
PyCharm 中的 %reset -f 功能:一键重置控制台变量
在 PyCharm 的日常使用中,我们经常需要在控制台中测试和运行各种代码片段。随着时间的推移,控制台中会积累大量的变量和输出,这可能会使得环境变得混乱,影响我们的开发效率。为了解决这个问题,IPython 提供了一个非常有…...

ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek
ollama-chat-ui-vue 使用vue3 vite elementUi 搭建的前端chat,通过ollama可与模型对话,目前支持独立思考,切换模型(联网查询后续支持) github地址:ollama-chat-ui-vue 制作不易github点点star,谢谢 前置工作 安装ollama,ollama官网地址 安装完olla…...
在Logback中拦截和修改日志
事实上,Logback并没有提供修改日志的直接方法,但有一种解决方法可以通过使用过滤器来实现我们的目标,即使它看起来有点黑客。 假设你记录了某个用户的某个id号数百次,它分散在整个应用程序中,现在你有了一个新的要求,要求你必须加密这个id号。当然,你足够聪明,可以为此…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...
02-性能方案设计
需求分析与测试设计 根据具体的性能测试需求,确定测试类型,以及压测的模块(web/mysql/redis/系统整体)前期要与相关人员充分沟通,初步确定压测方案及具体的性能指标QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组&…...
Qt学习及使用_第1部分_认识Qt---Qt开发基本流程
前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...

C++ Saucer 编写Windows桌面应用
文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架,开发Windows桌面应用,把一个html页面作为GUI设计放到Saucer里,隐藏掉运行时弹…...
TMC2226超静音步进电机驱动控制模块
目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...

【前端实战】如何让用户回到上次阅读的位置?
目录 【前端实战】如何让用户回到上次阅读的位置? 一、总体思路 1、核心目标 2、涉及到的技术 二、实现方案详解 1、基础方法:监听滚动,记录 scrollTop(不推荐) 2、Intersection Observer 插入探针元素 3、基…...

【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理
这篇学习笔记是Spring系列笔记的第7篇,该笔记是笔者在学习黑马程序员SSM框架教程课程期间的笔记,供自己和他人参考。 Spring学习笔记目录 笔记1:【SSM】Spring基础: IoC配置学习笔记-CSDN博客 对应黑马课程P1~P20的内容。 笔记2…...

SpringSecurity+vue通用权限系统
SpringSecurityvue通用权限系统 采用主流的技术栈实现,Mysql数据库,SpringBoot2Mybatis Plus后端,redis缓存,安全框架 SpringSecurity ,Vue3.2Element Plus实现后台管理。基于JWT技术实现前后端分离。项目开发同时采 …...