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,并将其配置为在公网上加密传输数…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...