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号。当然,你足够聪明,可以为此…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
