当前位置: 首页 > news >正文

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&#xff08;element&#xff09;用法 remove&#xff08;index&#xff09;用法 get(index)用法 set(index,element) 练习 test1 定义一个集合&#xff0c;添加字符串&#xff0c;并进行遍历&…...

Bitmap OOM

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

基于深度学习的人脸表情识别系统(PyQT+代码+训练数据集)

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

Qt 中的项目文件解析和命名规范

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、Qt项目文件解析 1、.pro 文件解析 2、widget.h 文件解析 3、main.cpp 文件解析 4、widget.cpp…...

【chatGPT】我:在Cadence Genus软件中,出现如下问题:......【4】

我 在Cadence Genus中&#xff0c;tcl代码为&#xff1a;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中的应用

在软件开发中&#xff0c;设计模式是解决特定问题的一种模板或者指南。它们是在多年的软件开发实践中总结出的有效方法。JAVA设计模式广泛应用于各种编程场景中&#xff0c;以提高代码的可读性、可维护性和扩展性。本文将介绍单例模式&#xff0c;这是一种常用的创建型设计模式…...

手把手教你创建新的OpenHarmony 三方库

创建新的三方库 创建 OpenHarmony 三方库&#xff0c;建议使用 Deveco Studio&#xff0c;并添加 ohpm 工具的环境变量到 PATH 环境变量。 创建方法 1&#xff1a;IDE 界面创建 在现有应用工程中&#xff0c;新创建 Module&#xff0c;选择"Static Library"模板&a…...

从零开始,如何成功进入IT行业?

0基础如何进入IT行业&#xff1f; 简介&#xff1a;对于没有任何相关背景知识的人来说&#xff0c;如何才能成功进入IT行业&#xff1f;是否有一些特定的方法或技巧可以帮助他们实现这一目标&#xff1f; 在当今数字化时代&#xff0c;IT行业无疑是一个充满活力和机遇的领域。…...

【数组】5螺旋矩阵

这里写自定义目录标题 一、题目二、解题精髓-循环不变量三、代码 一、题目 给定⼀个正整数 n&#xff0c;⽣成⼀个包含 1 到 n^2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的正⽅形矩阵。 示例: 输⼊: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 二、解题精髓…...

Sora视频生成模型:开启视频创作新纪元

随着人工智能技术的飞速发展&#xff0c;视频生成领域也迎来了前所未有的变革。Sora视频生成模型作为这一领域的佼佼者&#xff0c;凭借其卓越的性能和创新的应用场景&#xff0c;受到了广泛的关注与好评。本文将对Sora视频生成模型进行详细介绍&#xff0c;带您领略其魅力所在…...

OpenAI现已普遍提供带有视觉应用程序接口的GPT-4 Turbo

OpenAI宣布&#xff0c;其功能强大的GPT-4 Turbo with Vision模型现已通过公司的API全面推出&#xff0c;为企业和开发人员将高级语言和视觉功能集成到其应用程序中开辟了新的机会。 PS&#xff1a;使用Wildcard享受不受网络限制的API调用&#xff0c;详情查看教程 继去年 9 月…...

Swift中的元组属性

在Swift中&#xff0c;元组属性指的是一个元组作为结构体、类或枚举的属性。可以将一个元组作为属性来存储和访问多个值。 例如&#xff0c;考虑以下的Person类&#xff1a; class Person {var name: Stringvar age: Intvar address: (String, Int)init(name: String, age: I…...

【go从入门到精通】作用域,包详解

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…...

利用SARscape对日本填海造陆和天然气开采进行地表形变监测

日本千叶市&#xff0c;是日本南部重要的工业港市。位于西部的浦安市是一个典型的"填海造田"城市&#xff0c;东南部的东金区有一片天然气开采区域&#xff0c;本文利用SARscape&#xff0c;用干涉叠加的方法&#xff0c;即PS和SBAS&#xff0c;对这两个区域进行地表…...

“Python爬虫实战:高效获取网上公开美图“

如何通过Python创建一个简单的网络爬虫&#xff0c;以爬取网上的公开图片。网络爬虫是一种自动化工具&#xff0c;能够浏览互联网、下载内容并进行处理。请注意&#xff0c;爬取内容时应遵守相关网站的使用条款&#xff0c;尊重版权和隐私权。 ### 网络爬虫简介 网络爬虫&…...

C++设计模式:享元模式(十一)

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

【三十六】【算法分析与设计】综合练习(3),39. 组合总和,784. 字母大小写全排列,526. 优美的排列

目录 39. 组合总和 对每一个位置进行枚举 枚举每一个数出现的次数 784. 字母大小写全排列 526. 优美的排列 结尾 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不…...

ARM Cordio WSF(一)——架构简介

1. 关于WSF WSF&#xff08;wireless Software Foundation API&#xff09;&#xff0c;是一个RTOS抽象层。Wireless Software Foundation software service and porting layer&#xff0c;提供实时操作系统所需的基础服务&#xff0c;可基于不同平台进行实现&#xff0c;移植…...

设计模式总结-装饰者模式

模式动机 一般有两种方式可以实现给一个类或对象增加行为&#xff1a; 继承机制&#xff0c;使用继承机制是给现有类添加功能的一种有效途径&#xff0c;通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的&#xff0c;用户不能控制增…...

Stunnel网络加密服务

简介&#xff1a; Stunnel是一个用于创建SSL加密隧道的工具&#xff0c;针对本身无法进行TLS或SSL通信的客户端及服务器&#xff0c;Stunnel 可提供安全的加密连接。可以用于保护服务器之间的通信。您可以在每台服务器上安装Stunnel&#xff0c;并将其配置为在公网上加密传输数…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...