Java中List接口中方法的使用(初学者指南)

Java中List接口中方法的使用(初学者指南)

在Java中,List接口是Collection接口的子接口,它表示一个有序的集合,其中的元素都可以重复。List接口提供了许多额外的方法,用于对元素进行插入、删除、查询等操作。以下是对List接口中一些常用方法的简单介绍,并配以代码示例和注释。

1. 添加元素
  • boolean add(E e): 在列表的末尾添加一个元素。
  • void add(int index, E element): 在列表的指定位置插入一个元素。
import java.util.ArrayList;
import java.util.List;public class ListExample {public static void main(String[] args) {List<String> list = new ArrayList<>();// 在列表末尾添加元素list.add("Apple");list.add("Banana");// 在指定位置插入元素list.add(1, "Cherry"); // 在索引1的位置插入"Cherry"// 打印列表内容System.out.println(list); // 输出: [Apple, Cherry, Banana]}
}
2. 访问元素
  • E get(int index): 返回列表中指定位置的元素。
// 继续使用上面的示例
public class ListExample {// ...public static void main(String[] args) {// ...// 访问索引为1的元素(即"Cherry")String fruit = list.get(1);System.out.println("Fruit at index 1: " + fruit); // 输出: Fruit at index 1: Cherry}
}
3. 修改元素

List接口本身并没有直接提供修改元素的方法,但你可以通过索引访问元素并使用赋值操作来修改它。

// 继续使用上面的示例
public class ListExample {// ...public static void main(String[] args) {// ...// 修改索引为1的元素为"Grape"list.set(1, "Grape");// 打印列表内容System.out.println(list); // 输出: [Apple, Grape, Banana]}
}
4. 移除元素
  • E remove(int index): 移除列表中指定位置的元素,并返回该元素。
  • boolean remove(Object o): 移除列表中首次出现的指定元素(如果存在的话)。
// 继续使用上面的示例
public class ListExample {// ...public static void main(String[] args) {// ...// 移除索引为0的元素(即"Apple")list.remove(0);// 移除元素"Banana"list.remove("Banana");// 打印列表内容System.out.println(list); // 输出: [Grape](假设"Banana"之前已经被移除)}
}
5. 查找元素索引
  • int indexOf(Object o): 返回指定元素在列表中首次出现的索引,如果列表不包含该元素,则返回-1。
  • int lastIndexOf(Object o): 返回指定元素在列表中最后一次出现的索引,如果列表不包含该元素,则返回-1。
// 假设我们再次添加了"Banana"到列表中
list.add("Banana");// 查找"Grape"的索引
int index = list.indexOf("Grape");
System.out.println("Index of Grape: " + index); // 输出: Index of Grape: 0// 查找"Banana"的索引
int lastIndex = list.lastIndexOf("Banana");
System.out.println("Last Index of Banana: " + lastIndex); // 输出: Last Index of Banana: 1(假设"Banana"在末尾)
6. 列表大小与是否为空
  • int size(): 返回列表中的元素数量。
  • boolean isEmpty(): 如果列表不包含任何元素,则返回true
// 继续使用上面的示例
public class ListExample {// ...public static void main(String[] args) {// ...// 打印列表大小System.out.println("Size of list: " + list.size()); // 输出: Size of list: 2(假设列表中有"Grape"和"Banana")// 检查列表是否为空System.out.println("Is list empty? " + list.isEmpty()); // 输出: Is list empty? false(因为列表不为空)}
}#### 7. 遍历列表遍历列表的常用方法有使用`for`循环、`for-each`循环(也称为增强型`for`循环)或者`Iterator`。```java
// 使用for-each循环遍历列表
for (String fruit : list) {System.out.println(fruit); // 输出列表中的每个元素
}// 使用for循环和get方法遍历列表
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i)); // 同样输出列表中的每个元素
}// 使用Iterator遍历列表
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit); // 输出列表中的每个元素
}
8. 子列表

List接口还提供了获取子列表的方法。

// 假设我们有一个包含多个元素的列表
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits.add("Date");// 获取索引1(包含)到索引3(不包含)的子列表
List<String> subList = fruits.subList(1, 3);
System.out.println(subList); // 输出: [Banana, Cherry]

注意:对子列表的修改会反映到原列表中,并且必须小心不要以会导致索引越界的方式修改原列表的大小,因为这可能会引发ConcurrentModificationException

总结

以上就是对Java中List接口中一些常用方法的简单介绍和代码示例。这些方法是操作列表时非常基础和常用的,理解它们对于掌握Java集合框架的使用至关重要。当然,List接口的实现类(如ArrayListLinkedList等)还提供了更多高级功能,但初学者可以从这些基础方法开始,逐步深入学习和掌握。

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

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

相关文章

计算机Java项目|Springboot学生读书笔记共享

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…

C++通过json文件配置参数

一、安装nlohmann json nlohmann json&#xff1a;安装_nlohmann安装-CSDN博客 依次执行下面指令&#xff1a; git clone https://gitee.com/cuihongxi/mov_from_github.gitcd json-developmkdir buildcd buildcmake ..makesudo make install 二、安装完成后使用 #include…

华为设备display查看命令

display version //查看版本信息 display current-configuration //查看配置详情 display this //查看当前视图有效配置 display ip routing-table //查看路由表 display ip routing-table 192.168.3.1 //查看去往3.1的路由 display ip interface brief //查看接口下ip信息 dis…

想跨境出海?云手机提供了一种可能性

全球化时代&#xff0c;越来越多的中国电商开始将目光投向了海外市场。这并不是偶然&#xff0c;而是他们在长期的市场运营中&#xff0c;看到了出海的必要性和潜在的机会。 中国的电商市场无疑是全球最大也最发达的之一。然而&#xff0c;随着市场的不断发展和竞争的日益加剧…

visual studio2022 JNI极简开发流程

文章目录 1 创建java类2 生成JNI头文件3 使用visual studio2022创建DLL项目3.1 选择模板中&#xff08;Windows桌面向导&#xff09;3.2 为项目命名3.3 选择应用程序类型为动态链接库3.4 项目概览 4 导入需要的头文件4.1 导入需要的头文件4.2 修改头文件 5 编写C实现6 生成dll文…

服务器3389端口,服务器3389端口风险提示的应对措施

3389端口是Windows操作系统中远程桌面协议&#xff08;RDP&#xff09;的默认端口。一旦该端口被恶意攻击者利用&#xff0c;可能会导致未经授权的远程访问和数据泄露等严重安全问题。 针对此风险&#xff0c;强烈建议您采取以下措施&#xff1a; 1. 修改默认端口&#xff1a;…

Java面试之抽象类和接口

Java的一个重要特性就是抽象&#xff0c;抽象是指将具体的事物抽象成更一般化、更抽象化的概念或模型。在Java中&#xff0c;抽象可以通过抽象类和接口来实现&#xff0c;它们让你能够定义一些方法但不提供具体实现&#xff0c;从而让子类去实现具体细节。 一、抽象类&#xf…

springboot3 集成spring-authorization-server (一 基础篇)

官方文档 Spring Authorization Server 环境介绍 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 引入maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

识别AI论文生成内容,降低论文高AI率

AI写作工具能帮我们在短时间内高效生成一篇毕业论文、开通报告、文献综述、任务书、调研报告、期刊论文、课程论文等等&#xff0c;导致许多人开始使用AI写作工具作为撰写学术论文的辅助手段。而学术界为了杜绝此行为&#xff0c;开始使用AIGC检测系统来判断文章是由AI生成还是…

解锁商业AI,赋能新质生产力发展——思爱普中国峰会探展全纪录

ITValue 钛媒体独家探秘思爱普中国峰会&#xff0c;带你深刻感受SAP助力企业利用以商业AI为代表的数字化技术&#xff0c;实现质的飞跃&#xff0c;通过全数据、全球化、全绿色赋能新型中国企业发展新质生产力。 首发&#xff5c;钛媒体APP ITValue 5月10日&#xff0c;一年一度…

基于NTP服务器获取网络时间的实现

文章目录 1 NTP1.1 简介1.2 包结构1.3 UNIX 时间戳和NTP时间戳 2 代码实现2.1 实现步骤2.2 完整代码 3 结果 在某些场景下&#xff0c;单片机需要通过网络获取准确的时间进行数据同步&#xff0c;例如日志记录、定时任务等。然而&#xff0c;单片机本身无法直接获得准确的标准时…

Vue的学习 —— <vue指令>

目录 前言 正文 内容渲染指令 内容渲染指令的使用方法 v-text v-html 属性绑定指令 双向数据绑定指令 事件绑定指令 条件渲染指令 循环列表渲染指令 侦听器 前言 在完成Vue开发环境的搭建后&#xff0c;若想将Vue应用于实际项目&#xff0c;首要任务是学习Vue的基…

ORA-00932: inconsistent datatypes: expected - got CLOB的分析解决方案

最近在项目中遇到查询数据时报ORA-00932: inconsistent datatypes: expected - got CLOB错误&#xff0c;这个错误很明显是由于查询时类型的不匹配造成的。 问题分析&#xff1a; 一、检查你的查询的实体的类型是否于数据库的保持一致&#xff0c;如果不一致&#xff0c;那么需…

333_C++_编写一个go函数每次从文件中读取固定大小数据,且go作为回调,传递给其他函数中,多次调用,完成逐块传输数据

(core工程文件) tick_transfer_all_t类是一个用于异步传输数据的辅助类,它在某个异步操作完成后将_tick的值设置为0,并返回传输的结果 namespace hl {namespace http{namespace __detail{class tick_transfer_all_t{boost::shared_ptr<unsigned long long> _tick

MySQL 查询库 和 表 占用空间大小的 语句

查看mysql 数据库的大小 SELECT table_schema AS 数据库名称, ROUND(SUM(data_length index_length) / 1024 / 1024, 2) AS 数据库大小(MB) FROM information_schema.tables GROUP BY table_schema;查询数据库中表的 数据量&#xff08;这个方法 有缓存延迟&#xff0c;只能用…

[力扣题解] 96. 不同的二叉搜索树

题目&#xff1a;96. 不同的二叉搜索树 思路 动态规划 f[i]&#xff1a;有i个结点有多少种二叉搜索树 状态转移方程&#xff1a; 以n3为例&#xff1a; 以1为头节点&#xff0c;左子树有0个结点&#xff0c;右子树有2个结点&#xff1b; 以2为头节点&#xff0c;左子树有1个…

安科瑞AIM-D100-ES光伏储能系统直流绝缘监测仪

概述 AIM-D100-ES 型直流绝缘监测仪主要用于在线监测直流不接地系统正负极对地绝缘电阻&#xff0c;当绝缘电阻低于设定值时&#xff0c;能发出预警和报警信号。 产品可测 100-1500V 的直流系统&#xff0c;可应用于储能直流系统、电动汽车充电装置、UPS 供电系统、光伏直流系…

超级好用的C++实用库之日志类

&#x1f4a1; 需要该C实用库源码的大佬们&#xff0c;可搜索微信公众号“希望睿智”。添加关注后&#xff0c;输入消息“超级好用的C实用库”&#xff0c;即可获得源码的下载链接。 概述 日志类主要用于在程序运行过程中记录信息、错误、警告以及其他需要跟踪的数据&#xff0…

std::ref和std::cref的使用和原理分析

目录 1.用法 2.std::reference_wrapper介绍 3.std::ref原理分析 4.std::cref原理分析 5.总结 1.用法 它的定义如下&#xff1a; std::ref&#xff1a;用于包装按引用传递的值。 std::cref&#xff1a;用户包装按const引用传递的值。 C本身就有引用&#xff08;&&#…