Java列表List的定查改增删操作
Java列表List的定查改增删操作
- 定义
- 查找
- 遍历
- 元素与下标互查
- 修改
- 增加
- 删除
java.util中提供了三种常用的集合类,列表List、集合Map和字典Set。这些集合类相较于数组有更多功能,并且都可以通过Iterator(迭代器)来访问。
在这篇博客中,首先来介绍一下列表List。
List与数组类似,按顺序存储元素,但可以方便地增加和删除元素。List可以由数组(ArrayList)或链表(LinkedList)来实现。ArrayList方便查找元素,但是不方便增加/删除元素;LinkedList方便增加/删除元素,但不方便查找元素。一般使用ArrayList,但也要具体情况具体分析。
定义
List的定义方法有很多,在这里我只介绍两种,其他的方式可以参考Java 中初始化 List 集合的 6 种方式! 。
第一种常规方式,比较繁琐。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);for(int item : list){System.out.println(item);}}
}
第二种方式,借助Arrays工具类。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));for(int item : list){System.out.println(item);}}
}
查找
遍历
首先考虑遍历List,有两种方法。第一种方法是for循环+下标,第二种方法是使用Iterator(迭代器)。
第一种方法,有点类似于数组的操作,使用get函数。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));for(int i = 0; i < list.size(); i++){System.out.println(list.get(i));}}
}
第二种方法,也有两种不同的写法。
第一种写法上面已经展示过了,for循环+Iterator。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));for(int item : list){System.out.println(item);}}
}
第二种写法,使用Iterator的hasNext函数和next函数。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));for(Iterator it = list.iterator(); it.hasNext();){System.out.println(it.next());}}
}
总的来说,用Iterator要比用下标更快一些。此外,如果用for循环+下标的方式,在List删除元素时会有一些问题,具体可见List中remove()方法的注意事项。
元素与下标互查
其次考虑根据下标查找List中的元素,以及根据元素查找其在List中的下标。
对于第一个问题,在上面已经展示过了,使用get函数。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));int index = 1;int item = list.get(index);System.out.println(item);}
}
对于第二个问题,List有一个String中同名的函数,indexOf函数。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));int item = 3;int index = list.indexOf(item);System.out.println(index);}
}
修改
List要修改元素很简单,使用一个get函数相对应的函数,set函数。set函数对指定的下标进行修改。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));list.set(0, 666);for(int item : list){System.out.println(item);}}
}
增加
List要增加元素同样很简单,使用一个set函数类似的函数,add函数。add函数对指定的下标进行增加。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));list.add(0, 666);for(int item : list){System.out.println(item);}}
}
删除
List可以按下标删除元素,或者直接删除某个元素。
如果是按下标删除元素,那么返回值为被删除的元素。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));list.remove(1);for(int item : list){System.out.println(item);}}
}
如果是按元素删除,那么返回值为true/false,表示是否已删除。值得注意的是,当List为int型时,如果直接将元素传入remove函数,会被当作下标处理。需要将元素进行显式类型转换。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));list.remove((Integer) 1);for(int item : list){System.out.println(item);}}
}
在删除元素之前,可以先判断List中是否包含该元素。与String类似,可以用contains函数。
import java.util.*;public class Main
{public static void main(String[] args) {List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));if(list.contains((Integer) 1)) {list.remove((Integer) 1);}for(int item : list){System.out.println(item);}}
}
参考:
Java集合简介
使用List
Java 中初始化 List 集合的 6 种方式!
在Java中的List中查找元素的索引
List中remove()方法的注意事项
【Java】从List中正确删除一个整数
相关文章:
Java列表List的定查改增删操作
Java列表List的定查改增删操作定义查找遍历元素与下标互查修改增加删除java.util中提供了三种常用的集合类,列表List、集合Map和字典Set。这些集合类相较于数组有更多功能,并且都可以通过Iterator(迭代器)来访问。 在这篇博客中&…...
day03java语言特性 JDK、JRE、JVM
1、Java语言的特性 1.1、简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的。而Java虚拟机执行过程中再去操作内存。对于C或者C来说程序员都是可以直接通过指针操作内存的。C或者C更灵活&…...
HydroD 实用教程(二)有限元模型
目 录一、前言二、模型种类三、单元类型四、FEM文件五、参考文献一、前言 SESAM (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、…...
Java中的Set集合
Set不能存储重复元素,元素无序(指的是不按照添加的顺序,List集合是按照添加顺序存储的)hashSet注:源码底层是hashMap实现的,因为hashMap是双列的,其中键是不能重复的,而hashSet是单列…...
【RabbitMQ五】——RabbitMQ路由模式(Routing)
RabbitMQ路由模式前言RabbitMQ模式的基本概念为什么要使用Rabbitmq 路由模式RabbitMQ路由模式组成元素路由模式完整代码Pom文件引入RabbtiMQ依赖RabbitMQ工具类生产者消费者1消费者2运行结果截图前言 通过本篇博客能够简单使用RabbitMQ的路由模式。 本篇博客主要是博主通过官网…...
【C语言】宏定义 结构体 枚举变量的用法
目录 一、数据类型 二、C语言宏定义 三、C语言typedef重命名 四、 #define与typedef的区别 五、结构体 六、枚举变量 补充学习一点STM32的必备基础知识 一、数据类型 二、C语言宏定义 关键字:#define 用途:用一个字符串代替一个数字,…...
锁升级之Synchronized
Synchronized JVM系统锁一个对象里如果有多个synchronized方法,同一时刻,只要有一个线程去调用其中的一个synchronized方法,其他线程只能等待!锁的是当前对象,对象被锁定后,其他线程都不能访问当前对象的其…...
基于nodejs+vue疫情网课管理系统
疫情网课也都将通过计算机进行整体智能化操作,对于疫情网课管理系统所牵扯的管理及数据保存都是非常多的,例如管理员:首页、个人中心、学生管理、教师管理、班级管理、课程分类管理、课程表管理、课程信息管理、作业信息管理、请假信息管理、上课签到管理、论坛交流…...
Zabbix 构建监控告警平台(三)
Zabbix User parametersZabbix Trigger1.Zabbix User parameters 1.1即自定义KEY 注意:mysql安装在被监测主机 [rootlocalhost ~]# yum -y install mariadb-server mariadb [rootlocalhost ~]# systemctl start mariadb [rootlocalhost ~]# mysqladmin -uroot statu…...
Linux系统之dool命令行工具的基本使用
Linux系统之dool命令行工具的基本使用一、dool命令行工具介绍二、本地系统环境检查1.检查系统版本2.检查系统内核版本三、下载dool软件包1.创建下载目录2.下载dool四、安装dool1.安装python32.安装dool五、dool的命令帮助六、dool的基本使用1.直接使用dool监控系统2.监控cpu和网…...
LeetCode-2335-装满杯子需要的最短总时长
1、堆 我们可以维护一个堆,首先我们将数组中不为0的数全部加入堆中,而后进行循环。当堆不为空时,我们将堆顶元素出堆并减一,而后观察是否还能继续出堆,若能则出堆,否则跳过,最后我们将处理后的…...
npm ERR! code ELIFECYCLE解决方案,npm犯错!myweb@1.0.0构建脚本失败。
1.问题npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! myweb1.0.0 build: webpack --config config/webpack.config.jsnpm ERR! Exit status 1npm ERR!npm ERR! Failed at the myweb1.0.0 build script.npm犯错!代码ELIFECYCLEnpm犯错!errno 1npm犯错!myweb1.0.0 build: we…...
最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 本代码说明了“最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用。提供了一个示例,…...
ISYSTEM调试实践8-winIDEA Analyzer功能1
前面几篇介绍了ISYSTEM的基本调试界面和功能,相比我之前用过的IDE,除了几种断点方式和脚本功能以外,应该都是比较简单,稍微操作一下就可以直接上手,后续我将介绍winIDEA的Analyzer 功能。 1 Analyzer简介 iSYSTEM An…...
每日学术速递2.11
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.IR、cs.MM 1.A Comprehensive Survey on Multimodal Recommender Systems: Taxonomy, Evaluation, and Future Directions 标题:关于多模态推荐系统的综合调查:分…...
宝塔搭建实战php开源likeadmin通用管理admin端vue3源码(二)
大家好啊,我是测评君,欢迎来到web测评。 上一期给大家分享了server端的部署方式,今天来给大家分享admin端在本地搭建,与打包发布到宝塔的方法。感兴趣的朋友可以自行下载学习。 技术架构 vscode node16 vue3 elementPlus vit…...
网络基础-虚拟化工具-网桥
系列文章目录 本系列文章主要是回顾和学习工作中常用的网络基础命令,在此记录以便于回顾。 该篇文章主要是讲解虚拟化的工具网桥相关的概念和常用命令 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系…...
剑指 Offer 14- II. 剪绳子 II
剑指 Offer 14- II. 剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少&a…...
English Learning - Day55 作业打卡 2023.2.9 周四
English Learning - Day55 作业打卡 2023.2.9 周四引言1. Jim 在看电视的时候他的老婆正在做饭。2. 他刚睡着电话就响了。3. 我正在想事情,这时忽然有人从后面抓我胳膊。4. 我们总是边吃火锅边唱歌。5. 他一听说出了事故,马上就来了现场。6. He entered …...
pixhawk2.4.8-地面站配置-APM固件
文章目录一、硬件准备二、软件准备1 已实飞测试2 MP地面站 任意版本下载:3 APM固件 任意版本下载:三、飞控校准1 刷固件2 机架选择3 加速度计校准4 指南针校准5 遥控器校准6 飞行模式7 紧急断电&无头模式8 基础参数设置9 电流计校准10 电调校准11 起…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
