当前位置: 首页 > 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;并将其配置为在公网上加密传输数…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

STL 2迭代器

文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器&#xff1f; 1.迭代器…...

第14节 Node.js 全局对象

JavaScript 中有一个特殊的对象&#xff0c;称为全局对象&#xff08;Global Object&#xff09;&#xff0c;它及其所有属性都可以在程序的任何地方访问&#xff0c;即全局变量。 在浏览器 JavaScript 中&#xff0c;通常 window 是全局对象&#xff0c; 而 Node.js 中的全局…...

使用 uv 工具快速部署并管理 vLLM 推理环境

uv&#xff1a;现代 Python 项目管理的高效助手 uv&#xff1a;Rust 驱动的 Python 包管理新时代 在部署大语言模型&#xff08;LLM&#xff09;推理服务时&#xff0c;vLLM 是一个备受关注的方案&#xff0c;具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...