JAVA集合ArrayList
目录
ArrayList概述
add(element) 用法
add(index, element)用法
remove(element)用法
remove(index)用法
get(index)用法
set(index,element)
练习
test1
定义一个集合,添加字符串,并进行遍历,要求输出格式为:[元素1,元素2,元素3]
test2
定义一个集合,添加一些学生对象,并进行遍历,学生类的属性为:姓名,年龄
ArrayList概述
ArrayList
是 Java 集合框架中的一种动态数组,它实现了List
接口。它可以按照元素的插入顺序进行存储,并允许按索引访问、添加和删除元素。与普通数组不同的是,ArrayList
会自动扩容以容纳更多的元素,因此它的大小是可变的。
下面是一些ArrayList
的常用方法:
add(element)
: 向列表末尾添加一个元素。add(index, element)
: 在指定位置插入一个元素。remove(element)
: 默认删除第一个element元素。remove(index)
: 删除指定位置的元素。size()
: 返回列表中的元素数量。get(index)
: 获取指定位置的元素。- set(index,element):修改指定位置的元素。
add(element) 用法
add(element)
: 向列表末尾添加一个元素。
首先我们得先创建一个ArrayList
ArrayList<String> list=new ArrayList<>();
然后使用list.add()添加数据
list.add("aaa");
👆这个的返回值是一个Boolean类型的,下面我们来看一下示例
可以看得到返回的结果为true
添加的返回值始终都是true,所以平时使用的时候可以省略返回值
add(index, element)用法
add(index, element)
: 在指定位置插入一个元素。
跟add(element)差不多,这里就直接展示代码啦
学完添加我们来看看如何删除
remove(element)用法
remove(element)
: 默认删除第一个element元素。
它的返回值是一个Boolean类型
如果集合里面没有要删除的数据就返回false
remove(index)用法
remove(index)
: 删除指定位置的元素。
这个的返回值时删除的元素
运行结果在这里👇
get(index)用法
get(index)
: 获取指定位置的元素。
结果如下
那我们如果想遍历一下该如何实现呢
集合里的长度是int size(),那我们就可以使用循环来实现遍历
运行结果如下
set(index,element)
set(index,element):修改指定位置的元素。
运行结果如下,而已看到后面的aaa被修改为了eee
下面我们来搞点练习试试
-----------------------------------------------------------------------------------------------------------------------------
练习
test1
定义一个集合,添加字符串,并进行遍历,要求输出格式为:[元素1,元素2,元素3]
分析:这样的话,我们输出的时候就不需要换行,在遍历的同时还得有一个逗号的判断,什么时候需要逗号,什么时候不需要逗号
下面我们就来看一下代码是如何实现的
import java.util.ArrayList;public class test1 {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();list.add("听歌");list.add("睡觉");list.add("敲代码");list.add("上班");list.add("吃饭");System.out.print("[");for (int i = 0; i < list.size(); i++) {String str= list.get(i);System.out.print(str);if (i<list.size()-1) {System.out.print(",");}}System.out.print("]");}
}
结果跟要求是一样的啦
那如果是添加数字呢?该如何实现
这里就需要用到基本数据类型对应的包装类
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
好,有了这个就好办多了
首先先创建一个ArrayList,数据类型改一下
ArrayList<Integer> list=new ArrayList<>();
import java.util.ArrayList;public class test1 {public static void main(String[] args) {ArrayList<Integer> list=new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);System.out.print("[");for (int i = 0; i < list.size(); i++) {int str= list.get(i);System.out.print(str);if (i<list.size()-1) {System.out.print(",");}}System.out.print("]");}
}
test2
定义一个集合,添加一些学生对象,并进行遍历,学生类的属性为:姓名,年龄
首先我们得创建一个学生对象
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{name = " + name + ", age = " + age + "}";}
}
下面才是本道练习的代码
import java.util.ArrayList;public class test2 {public static void main(String[] args) {ArrayList<Student>list=new ArrayList<>();Student S1=new Student("zhangsan",18);Student S2=new Student("lisi",19);Student S3=new Student("wagwu",20);list.add(S1);list.add(S2);list.add(S3);for (int i = 0; i < list.size(); i++) {Student student = list.get(i);System.out.println(student.getName()+","+student.getAge());}}
运行结果如下
如果我们要手动输入这三个学生的信息的话那又该如何呢?
下面我们来看一下这该如何实现
import java.util.ArrayList;
import java.util.Scanner;public class test2 {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 stu=new Student();System.out.println("请输入学生的姓名");String name=sc.next();System.out.println("请输入学生的年龄");int age=sc.nextInt();stu.setAge(age);stu.setName(name);list.add(stu);}System.out.println("----------------------------------------------------------");for (int i = 0; i < list.size(); i++) {Student student = list.get(i);System.out.println(student.getName()+","+student.getAge());}}
}
运行结果如下
test3
main方法中定义一个集合,存入三个用户对象。用户属性为:id、username,password。要求:定义一个方法,根据id查找对应的用户信息。如果存在,返回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;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return username*/public String getUsername() {return username;}/*** 设置* @param username*/public void setUsername(String username) {this.username = username;}/*** 获取* @return password*/public String getPassword() {return password;}/*** 设置* @param password*/public void setPassword(String password) {this.password = password;}public String toString() {return "User{id = " + id + ", username = " + username + ", password = " + password + "}";}}
再开始写本题
首先我们得创建集合,再创建三个用户对象,再将用户对象添加到集合中
然后就开始写方法了
先遍历集合,再利用equals()方法判断集合里的id与我们要查找的id是否相同,相同就返回true,遍历结束都没有符合要求的就返回false
完整测试代码如下
import java.util.ArrayList;public class ArrayListTest1 {public static void main(String[] args) {//创建集合ArrayList<User>list=new ArrayList<>();//创建三个用户对象User user1=new User("1","zhangsan","111");User user2=new User("2","lisi","222");User user3=new User("3","wangwu","333");//把用户对象添加到集合中list.add(user1);list.add(user2);list.add(user3);boolean b = find(list, "1");System.out.println(b);}public static boolean find(ArrayList<User>list,String id){for (int i = 0; i < list.size(); i++) {User user=list.get(i);String userId = user.getId();if(userId.equals(id)){return true;}}return false;}
}
测试结果如下
test4
定义javabean类:PhonePhone属性:品牌,价格。main方法中定义一个集合,存入三个手机对象。分别为:小米,1999。苹果,8000。oppo,2999。定义一个方法,将价格低于3000的手机信息返回。
首先还是先写JavaBean类
public class Phone {private String brand;private int price;public Phone() {}public Phone(String brand, int price) {this.brand = brand;this.price = price;}/*** 获取* @return brand*/public String getBrand() {return brand;}/*** 设置* @param brand*/public void setBrand(String brand) {this.brand = brand;}/*** 获取* @return price*/public int getPrice() {return price;}/*** 设置* @param price*/public void setPrice(int price) {this.price = price;}public String toString() {return "Phone{brand = " + brand + ", price = " + price + "}";}
}
然后在写本题主要代码
还是先创建集合,再创建三个用户对象,再将用户对象添加到集合中
接下来我们写方法
这其实就相当于把数据都放到了一个容器中,再将容器返回
main方法中还得用集合去接收
最后在遍历返回的集合,输出我们想要的结果
完整代码如下
import java.util.ArrayList;public class ArrayListTest2 {public static void main(String[] args) {ArrayList<Phone>list=new ArrayList<>();Phone phone1=new Phone("小米",1999);Phone phone2=new Phone("苹果",8000);Phone phone3=new Phone("oppo",2999);list.add(phone1);list.add(phone2);list.add(phone3);ArrayList<Phone> phoneList = getPhone(list);for (int i = 0; i < phoneList.size(); i++) {Phone phone=phoneList.get(i);System.out.println(phone.getBrand()+","+phone.getPrice());}}public static ArrayList<Phone> getPhone(ArrayList<Phone>list){//定义一个集合用于返回ArrayList<Phone>resultList=new ArrayList<>();for (int i = 0; i < list.size(); i++) {Phone phone=list.get(i);int price=phone.getPrice();if(price<3000){resultList.add(phone);}}return resultList;}
}
测试结果
ArrayList的学习就到这里啦,我们下期再见!!!
继续努力
相关文章:

JAVA集合ArrayList
目录 ArrayList概述 add(element) 用法 add(index, element)用法 remove(element)用法 remove(index)用法 get(index)用法 set(index,element) 练习 test1 定义一个集合,添加字符串,并进行遍历&…...

Bitmap OOM
老机器Bitmap预读仍然OOM,无奈增加一段,终于不崩溃了。 if (Build.VERSION.SDK_INT < 21)size 2; 完整代码: Bitmap bitmap; try {//Log.e(Thread.currentThread().getStackTrace()[2] "", surl);URL url new URL(surl);…...

基于深度学习的人脸表情识别系统(PyQT+代码+训练数据集)
基于深度学习的人脸表情识别系统(PyQT代码训练数据集) 前言一、数据集1.1 数据集介绍1.2 数据预处理 二、模型搭建三、训练与测试3.1 模型训练3.2 模型测试 四、PyQt界面实现 前言 本项目是基于mini_Xception深度学习网络模型的人脸表情识别系统&#x…...

Qt 中的项目文件解析和命名规范
🐌博主主页:🐌倔强的大蜗牛🐌 📚专栏分类:QT❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、Qt项目文件解析 1、.pro 文件解析 2、widget.h 文件解析 3、main.cpp 文件解析 4、widget.cpp…...
【chatGPT】我:在Cadence Genus软件中,出现如下问题:......【4】
我 在Cadence Genus中,tcl代码为:foreach clk $clk_list{ set clkName [lindex $clk_list 0] set targetFreq [lindex $clk_list 1] set uncSynth [lindex $clk_list 4] set clkPeriod [lindex “%.3f” [expr 1 / $targetFreq]] … } 以上代码出现如下…...
单例模式(Singleton Pattern)在JAVA中的应用
在软件开发中,设计模式是解决特定问题的一种模板或者指南。它们是在多年的软件开发实践中总结出的有效方法。JAVA设计模式广泛应用于各种编程场景中,以提高代码的可读性、可维护性和扩展性。本文将介绍单例模式,这是一种常用的创建型设计模式…...

手把手教你创建新的OpenHarmony 三方库
创建新的三方库 创建 OpenHarmony 三方库,建议使用 Deveco Studio,并添加 ohpm 工具的环境变量到 PATH 环境变量。 创建方法 1:IDE 界面创建 在现有应用工程中,新创建 Module,选择"Static Library"模板&a…...
从零开始,如何成功进入IT行业?
0基础如何进入IT行业? 简介:对于没有任何相关背景知识的人来说,如何才能成功进入IT行业?是否有一些特定的方法或技巧可以帮助他们实现这一目标? 在当今数字化时代,IT行业无疑是一个充满活力和机遇的领域。…...

【数组】5螺旋矩阵
这里写自定义目录标题 一、题目二、解题精髓-循环不变量三、代码 一、题目 给定⼀个正整数 n,⽣成⼀个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正⽅形矩阵。 示例: 输⼊: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 二、解题精髓…...
Sora视频生成模型:开启视频创作新纪元
随着人工智能技术的飞速发展,视频生成领域也迎来了前所未有的变革。Sora视频生成模型作为这一领域的佼佼者,凭借其卓越的性能和创新的应用场景,受到了广泛的关注与好评。本文将对Sora视频生成模型进行详细介绍,带您领略其魅力所在…...

OpenAI现已普遍提供带有视觉应用程序接口的GPT-4 Turbo
OpenAI宣布,其功能强大的GPT-4 Turbo with Vision模型现已通过公司的API全面推出,为企业和开发人员将高级语言和视觉功能集成到其应用程序中开辟了新的机会。 PS:使用Wildcard享受不受网络限制的API调用,详情查看教程 继去年 9 月…...
Swift中的元组属性
在Swift中,元组属性指的是一个元组作为结构体、类或枚举的属性。可以将一个元组作为属性来存储和访问多个值。 例如,考虑以下的Person类: class Person {var name: Stringvar age: Intvar address: (String, Int)init(name: String, age: I…...

【go从入门到精通】作用域,包详解
作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…...

利用SARscape对日本填海造陆和天然气开采进行地表形变监测
日本千叶市,是日本南部重要的工业港市。位于西部的浦安市是一个典型的"填海造田"城市,东南部的东金区有一片天然气开采区域,本文利用SARscape,用干涉叠加的方法,即PS和SBAS,对这两个区域进行地表…...
“Python爬虫实战:高效获取网上公开美图“
如何通过Python创建一个简单的网络爬虫,以爬取网上的公开图片。网络爬虫是一种自动化工具,能够浏览互联网、下载内容并进行处理。请注意,爬取内容时应遵守相关网站的使用条款,尊重版权和隐私权。 ### 网络爬虫简介 网络爬虫&…...

C++设计模式:享元模式(十一)
1、定义与动机 概述:享元模式和单例模式一样,都是为了解决程序的性能问题。面向对象很好地解决了"抽象"的问题,但是必不可免得要付出一定的代价。对于通常情况来讲,面向对象的成本大豆可以忽略不计。但是某些情况&#…...

【三十六】【算法分析与设计】综合练习(3),39. 组合总和,784. 字母大小写全排列,526. 优美的排列
目录 39. 组合总和 对每一个位置进行枚举 枚举每一个数出现的次数 784. 字母大小写全排列 526. 优美的排列 结尾 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不…...
ARM Cordio WSF(一)——架构简介
1. 关于WSF WSF(wireless Software Foundation API),是一个RTOS抽象层。Wireless Software Foundation software service and porting layer,提供实时操作系统所需的基础服务,可基于不同平台进行实现,移植…...

设计模式总结-装饰者模式
模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增…...
Stunnel网络加密服务
简介: Stunnel是一个用于创建SSL加密隧道的工具,针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel 可提供安全的加密连接。可以用于保护服务器之间的通信。您可以在每台服务器上安装Stunnel,并将其配置为在公网上加密传输数…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...