Java零基础学习Day12——集合ArrayList
一、基本使用
1. 集合与数组
集合只存引用数据类型;长度可变
数组可存基本数据类型、引用数据类型;长度固定
2. 基本格式
ArrayList<String> list = new ArrayList<>();
3. 方法
增、删
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Hello"); // Adding strings to the listlist.add("World");list.add("Java"); // Adding more stringslist.add("Python");boolean result1 = list.remove("Hello"); // Removing "Hello"System.out.println(result1);System.out.println(list);boolean result2 = list.remove("Word");System.out.println(result2);System.out.println(list);String str = list.remove(0);System.out.println(str);System.out.println(list);}
}
改、查
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Hello"); // Adding strings to the listlist.add("World");list.add("Java"); // Adding more stringslist.add("Python");//改String result = list.set(0, "hi");System.out.println(result);System.out.println(list);//查String s = list.get(0);System.out.println(s);System.out.println("对集合进行遍历:");for (int i = 0; i < list.size(); i++) {String str = list.get(i);System.out.println(str);}}
}
二、练习
1. 集合的遍历方式
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("他"); // Adding strings to the listlist.add("是");list.add("笨"); // Adding more stringslist.add("蛋");System.out.print("[");for (int i = 0; i < list.size(); i++) {if(i == list.size() - 1) {System.out.print(list.get(i));}else{System.out.print(list.get(i) + ", ");}}System.out.print("]");}
}
2. 添加数字并遍历
基本数据类型对应的包装类
byte | Byte |
short | Short |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
int | Integer |
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);System.out.print("[");for (int i = 0; i < list.size(); i++) {if(i == list.size() - 1) {System.out.print(list.get(i));}else{System.out.print(list.get(i) + ", ");}}System.out.print("]");}
}
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<Character> list = new ArrayList<>();list.add('a');list.add('b');list.add('c');list.add('d');System.out.print("[");for (int i = 0; i < list.size(); i++) {if(i == list.size() - 1) {System.out.print(list.get(i));}else{System.out.print(list.get(i) + ", ");}}System.out.print("]");}
}
3. 添加学生对象并遍历
指定学生对象
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();Student s1 = new Student("张三", 18);Student s2 = new Student("李四", 19);Student s3 = new Student("王五", 20);Student s4 = new Student("赵六", 21);Student s5 = new Student("钱七", 22);list.add(s1);list.add(s2);list.add(s3);list.add(s4);list.add(s5);for (int i = 0; i < list.size(); i++) {Student str = list.get(i);System.out.println(str.getName() + " " + str.getAge());}}
}
键盘录入学生对象
import java.util.ArrayList;
import java.util.Scanner;
public class StringDemo {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();Scanner sc = new Scanner(System.in);for (int i = 0; i < 3; i++) {Student s = new Student();System.out.println("Enter student name: ");s.setName(sc.next());System.out.println("Enter student age: ");s.setAge(sc.nextInt());list.add(s);}System.out.println(list.size());for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i).getName()+"\t"+list.get(i).getAge());}}
}
4. 添加用户对象并判断是否存在
返回true或false,返回索引
public class User {private String id;private String username;private String password;public User() {}public User(String id, String username, String password) {this.id = id;this.username = username;this.password = password;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<User> list = new ArrayList<>();User u1 = new User("001", "张三", "123456"); // 创建用户对象User u2 = new User("002", "李四", "654321");User u3 = new User("003", "王五", "123fjie");list.add(u1); // 将用户对象添加到集合中list.add(u2);list.add(u3);int index = getIndex(list, "003"); // 调用contains方法判断集合中是否包含指定ID的用户System.out.println(index); // 输出结果 2System.out.println(contains(list, "003")); // 输出结果 true}public static int getIndex(ArrayList<User> list, String id) {for (int i = 0; i < list.size(); i++) {User u = list.get(i); // 获取集合中的每个用户对象if (u.getId().equals(id)) { // 判断用户ID是否与输入的ID匹配return i;}}return -1;}public static boolean contains(ArrayList<User> list, String id) {return getIndex(list, id) != -1;}
}
4. 返回多个数据
有两个方法,一个是视频里的,一个是我写的
import java.util.ArrayList;
public class StringDemo {public static void main(String[] args) {ArrayList<Phone> list = new ArrayList<>();Phone p1 = new Phone("VIVO", 1000); // 创建用户对象Phone p2 = new Phone("oppo", 8000);Phone p3 = new Phone("三星", 2999);list.add(p1); // 将用户对象添加到集合中list.add(p2);list.add(p3);ArrayList<Phone> newList = getPhoneInfo(list);for(int i = 0; i<newList.size(); i++){System.out.println(newList.get(i).getBrand() + " " + newList.get(i).getPrice());}System.out.println("=========================");getPhoneInfo_myself(list);}public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {ArrayList<Phone> newList = new ArrayList<>(); // 创建一个新的集合用于存储符合条件的用户for (int i = 0; i < list.size(); i++) {Phone p = list.get(i); // 获取集合中的每个用户对象if (p.getPrice()<3000) { // 判断用户ID是否与输入的ID匹配newList.add(p); // 如果匹配,则将该用户对象添加到新集合中} // 如果不匹配,则继续循环} // 循环结束后,返回新集合return newList;}public static void getPhoneInfo_myself(ArrayList<Phone> list) {for (int i = 0; i < list.size(); i++) {Phone p = list.get(i); // 获取集合中的每个用户对象if (p.getPrice()<3000) { // 判断用户ID是否与输入的ID匹配System.out.println(p.getBrand() + " " + p.getPrice());}}}
}
相关文章:

Java零基础学习Day12——集合ArrayList
一、基本使用 1. 集合与数组 集合只存引用数据类型;长度可变 数组可存基本数据类型、引用数据类型;长度固定 2. 基本格式 ArrayList<String> list new ArrayList<>(); 3. 方法 增、删 import java.util.ArrayList; public class St…...

[论文阅读]Formalizing and Benchmarking Prompt Injection Attacks and Defenses
Formalizing and Benchmarking Prompt Injection Attacks and Defenses Formalizing and Benchmarking Prompt Injection Attacks and Defenses | USENIX 33rd USENIX Security Symposium (USENIX Security 24) 提出了一个框架来形式化提示注入攻击,对提示注入攻击…...
ffmpeg 写入avpacket时候,即av_interleaved_write_frame方法是如何不需要 业务层释放avpacket的 逻辑分析
我们在通过 av_interleaved_write_frame方法 写入 avpacket的时候,通常不需要关心 avpacket的生命周期。 本文分析一下内部实现的部分。 ----> 代表一个内部实现。 A(){ B(); C(); } B(){ D(); } 表示为: A ---->B(); ---->D(); ---->C(); int…...
目标检测中的IoU损失函数
目标检测中的IoU损失函数 目标检测中的IoU损失函数一、为什么需要IoU损失函数?二、常见IoU损失函数详解1. **IoU Loss**2. **GIoU Loss(Generalized IoU)**3. **DIoU Loss(Distance IoU)**4. **CIoU Loss(C…...
深入剖析 MyBatis 位运算查询:从原理到最佳实践
深入剖析 MyBatis 位运算查询:从原理到最佳实践 引言 在数据库设计中,位运算是一种高效存储和查询多选字段的常用技术。然而,在实际开发中,特别是在使用 MyBatis 这样的 ORM 框架时,位运算查询往往会遇到一些意想不到…...

JavaScript性能优化实战,从理论到落地的全面指南
在前端开发领域,JavaScript的性能优化是提升用户体验的核心环节。随着Web应用复杂度的提升,开发者面临的性能瓶颈也日益多样化。本文将从理论分析、代码实践和工具使用三个维度,系统性地讲解JavaScript性能优化的实战技巧,并通过大…...
第二个五年计划!
下一阶段!5年后!33岁!体重维持在125斤内!腰围74! 健康目标: 体检指标正常,结节保持较小甚至变小! 工作目标: 每年至少在一次考评里拿A(最高S,A我理…...
【行为型之中介者模式】游戏开发实战——Unity复杂系统协调与通信架构的核心秘诀
文章目录 🕊️ 中介者模式(Mediator Pattern)深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码(成就系统协调)1. 定义中介者接口与同事基类2. 实现具体同事类3. 实现具体中介者4. 客户端使用 四、模式…...
分布式微服务系统架构第125集:AI大模型
加群联系作者vx:xiaoda0423 仓库地址:https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ 一、user 表(用户表) sql 复制编辑 create table if not exists user (id bigint auto_increment comment id pri…...

MySQL 8.0 OCP 英文题库解析(三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题16~25 试题16:…...
MapReduce 模型
引言 MapReduce 是分布式计算领域的里程碑式模型,由 Google 在 2004 年论文中首次提出,旨在简化海量数据处理的复杂性。其核心思想是通过函数式编程的 Map (映射)和 Reduce (归约)阶段&#x…...

Docker容器启动失败?无法启动?
Docker容器无法启动的疑难杂症解析与解决方案 一、问题现象 Docker容器无法启动是开发者在容器化部署中最常见的故障之一。尽管Docker提供了丰富的调试工具,但问题的根源往往隐藏在复杂的配置、环境依赖或资源限制中。本文将从环境变量配置错误这一细节问题入手&am…...
mysql dump 导入导出用法
导出 指定库中指定的表 mysqldump -uroot -pmysql databasename table1 table2 > ./bak.sql 导入 mysql -uroot -p123456 databasename< ./bak.sql 导出指定数据库 mysqldump -uroot -p123456 databasename > ./databasename.sql 导入: mysql -uroot…...

MySQL 数据类型全面指南:从理论到实践
在数据库设计和开发中,数据类型的选择是构建高效、可靠系统的基石。MySQL作为最流行的关系型数据库之一,提供了丰富的数据类型以满足各种数据存储需求。本文将全面介绍MySQL的数据类型体系,通过理论讲解和实际示例,帮助开发者做出…...
第二课:ESP32 使用 PWM 渐变控制——实现模拟呼吸灯或音调变化
第二课:ESP32 使用 PWM 渐变控制——实现模拟呼吸灯或音调变化 🧠 一、PWM 占空比与亮度/音量控制原理 PWM(Pulse Width Modulation,脉宽调制)是一种常用的数字信号控制方式,广泛应用于 LED 灯光亮度、电…...
Quartus与Modelsim-Altera使用手册
目录 文章内容: 视频内容: Quartus: ModelSim: 顶层设计与子模块: 只是对所查阅的相关文章的总结与视频总结 文章内容: 这篇对基础操作很详细: 一、Quartus II软件的使用_quartus2软件上…...

uniapp(微信小程序)>关于父子组件的样式传递问题(自定义组件样式穿透)
在父组件中给子组件添加类名,子组件的样式由父组件决定 由于"微信小程序"存在【样式隔离机制】,且默认设置为isolated(启用样式隔离),因此这里给出以下两种解决方案: // 小程序编译机制 1. 当 <style scoped> 存在时&#…...

【HCIA】BFD
前言 前面我们介绍了浮动路由以及出口路由器的默认路由配置,可如此配置会存在隐患,就是出口路由器直连的网络设备并不是运营商的路由器,而是交换机。此时我们就需要感知路由器的存活状态,这就需要用到 BFD(Bidirectio…...

计算机视觉最不卷的方向:三维重建学习路线梳理
提到计算机视觉(CV),大多数人脑海中会立马浮现出一个字:“卷”。卷到什么程度呢?2022年秋招CV工程师岗位数下降了16%,但求职人数增加了23%,求职人数与招聘岗位的比例达到了恐怖的15:1࿰…...

android抓包踩坑记录
由于需要公司业务需求,需要抓取APP中摄像机插件的网络包,踩了两天坑,这里做个总结吧。 事先准备 android-studio emulatesdk 需要android模拟器和adb调试工具。如果已经有其他模拟器的话,可以只安装adb调试工具即可 mitmproxy…...

Webpack其他插件
安装html打包插件 const path require(path); const HtmlWebpackPlugin require(html-webpack-plugin) module.exports {entry: path.resolve(__dirname,src/login/index.js),output: {path: path.resolve(__dirname, dist),filename: ./login/index.js,clean:true},Plugin:…...
如何正确地写出单例模式
如何正确地写出单例模式 | Jarks Blog 枚举方式: public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的,并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...
常见相机焦段的分类及其应用
相机焦段是指镜头的焦距范围,决定了拍摄时的视角、画面范围和透视效果。不同焦段适合不同的拍摄场景和主题,以下是常见焦段的分类及其应用: 一、焦段的核心概念 焦距:镜头光学中心到成像传感器的距离(单位:…...

Python Matplotlib 库【绘图基础库】全面解析
让AI成为我们的得力助手:《用Cursor玩转AI辅助编程——不写代码也能做软件开发》 一、发展历程 Matplotlib 由 John D. Hunter 于 2003 年创建,灵感来源于 MATLAB 的绘图系统。作为 Python 生态中最早的可视化工具之一,它逐渐成为科学计算领…...

C++ string数据查找、string数据替换、string子串获取
string查找示例见下,代码见下,以及对应运行结果见下: #include<iostream>using namespace std;int main() {// 1string s1 "hellooooworld";cout << s1.find("oooo") << endl;// 2cout << (in…...
入侵检测SNORT系统部署过程记录
原理背景知识: 一、入侵检测系统介绍 1、入侵检测系统 入侵检测(Intrusion Detection) 指通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。 入侵检测系统(IDS) 是从网络和系统中收集…...
使用 Java 反射动态加载和操作类
Java 的反射机制(Reflection)是 Java 语言的一大特色,它允许程序在运行时检查、加载和操作类、方法、字段等元信息。通过 java.lang.Class 和 java.lang.reflect 包,开发者可以动态加载类、创建实例、调用方法,甚至在运行时构造新类。反射是 Java 灵活性的核心,广泛应用于…...

关于甲骨文(oracle cloud)丢失MFA的解决方案
前两年,申请了一个招商的多币种信用卡,然后就从网上撸了一个oracle的免费1h1g的服务器。 用了一段时间,人家要启用MFA验证。 啥叫MFA验证,类似与短信验证吧,就是绑定一个手机,然后下载一个app,每…...
vue3项目中使用CodeMirror组件的详细教程,中文帮助文档,使用手册
简介 这是基于 Vue 3 开发的 CodeMirror 组件。该组件基于 CodeMirror 5 开发,仅支持 Vue 3。 除了支持官方提供的各种语法模式外,还额外添加了日志输出展示模式,开箱即用,但不一定适用于所有场景。 如需完整文档和更多使用案例…...
C++ stl中的list的相关函数用法
文章目录 list的介绍list的使用定义方式 插入和删除迭代器的使用获取元素容器中元素个数和容量的控制其它操作函数 list的使用,首先要包含头文件 #include <list>list的介绍 1.list是一种可以在常数范围内在链表中的任意位置进行插入和删除的序列式容器&…...