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

Arraylist集合

保存数据会经常使用到数组,但数组存在以下几个缺陷:

  1. 长度固定;
  2. 保存的必须为同一类型的元素,(基本数据类型,或引用数据类型);
  3. 使用数组进行增加元素的步骤比较麻烦;

这个时候就需要用一个比数组要“高级的容器”来解决,这就是集合:

  1.  可以动态保存任意多个不同类型对象,使用方便;
  2. 提供了一系列方便的操作对象的方法:add、remove、set、get等;
  3.  使用集合添加、删除新元素要简单的多;
  4. 集合不能存放基本数据类型,只能存放对象的引用,对于基本数据类型的存放,都是存的包装类,即 Integer、Byte等;

<E>表示泛型

 

import java.util.ArrayList;public class Demo01 {public static void main(String[] args) {//泛型:限定集合中存储数据的基本类型//不能写int  要用Integer// ArrayList<int> list = new ArrayList<>();  //报错ArrayList<String> list = new ArrayList<>();//此时我们创建的是ArrayList的对象,而ArrayList是java已经写好的一个类// 这个类在底层做了一些处理打印对象不是地址值,而是集合中存储数据内容// 在输出的时候会拿[]把所有的数据进行包裹System.out.println(list); //[]}
}

ArrayList成员方法

方法名说明
boolean add(E e)添加元素,返回值表示是否添加成功
boolean remove(E e)删除指定元素,返回值表示是否删除成功
E remove(int index)删除指定索引的元素,返回被删除元素
E set(int index,E e)修改指定索引下的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,也就是集合中元素的个数

import java.util.ArrayList;public class ArraylistDemo02 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//添加元素System.out.println(list.add("a"));//trueSystem.out.println(list);//[a]//多添加几个list.add("b");list.add("c");list.add("d");list.add("e");System.out.println(list);//[a, b, c, d, e]//获取长度System.out.println(list.size());//5//遍历for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");//a b c d e }System.out.println();//换行//删除元素System.out.println(list.remove(0));//删除索引为0的元素返回被删除元素 //aSystem.out.println(list.remove("e"));//删除知道元素e  //trueSystem.out.println(list);//[b, c, d]//修改元素System.out.println(list.set(1, "111"));//修改指定索引1的元素,返回原来的元素 //cSystem.out.println(list);//[b, 111, d]//查询System.out.println(list.get(0));//获取指定索引的元素 //b}
}

基本数据类型对应的包装类:

intInteger
charCharacter
byteByte
shortShort
longLong
floatFloat
doubleDouble
booleanBoolean

例1:

import java.util.ArrayList;public class Demo03 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//添加元素list.add("a");list.add("b");list.add("c");list.add("d");list.add("e");//遍历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.println("]");//[a,b,c,d,e]ArrayList<Integer> list2 = new ArrayList<>();list2.add(1);list2.add(2);list2.add(3);list2.add(4);list2.add(5);//遍历System.out.print("[");for (int i = 0; i < list2.size(); i++) {if (i == list2.size() - 1) {System.out.print(list2.get(i));} else {System.out.print(list2.get(i) + ",");}}System.out.println("]");//[1,2,3,4,5]ArrayList<Character> list3 = new ArrayList<>();list3.add('s');list3.add('d');list3.add('f');System.out.println(list3);//[s, d, f]}
}

例2:

import java.util.ArrayList;public class ArraylistDemo04 {public static void main(String[] args) {ArrayList<Student> list = new ArrayList<>();//创建学生对象Student s1 = new Student("nn", 5);Student s2 = new Student("hh", 6);//添加元素list.add(s1);list.add(s2);//换种方式添加list.add(new Student("pd", 7));list.add(new Student("bb", 8));//遍历集合for (int i = 0; i < list.size(); i++) {//方式一//System.out.print(list.get(i).getName() + "," + list.get(i).getAge()+" ");// 方式二Student student = list.get(i);System.out.print(student.getName() + "," + student.getAge() + " ");//nn,5 hh,6 pd,7 bb,8}}
}class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

例3

import java.util.ArrayList;
import java.util.Scanner;public class ArraylistDemo05 {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 student = new Student();System.out.println("请输入学生姓名");String name = sc.next();System.out.println("亲输入学生年龄");int age = sc.nextInt();//name,age赋值给学生对象student.setName(name);student.setAge(age);//学生对象添加到集合中list.add(student);}//遍历集合for (int i = 0; i < list.size(); i++) {//方式一System.out.print(list.get(i).getName() + "," + list.get(i).getAge() + " ");}}
}
class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

例4

import java.util.ArrayList;/**定义Javabean类:PhonePhone属性:品牌,价格。* main方法中定义一个集合,存入三个手机对象。分别为:小米,2000。苹果,8000。华为9999.vivo 2999* 定义一个方法,将价格低于3000的手机信息返回*/
public class ArraylistDemo06 {public static void main(String[] args) {ArrayList<Phone> list = new ArrayList<>();//创建手机对象Phone p1 = new Phone("小米", 2000);Phone p2 = new Phone("苹果", 8000);Phone p3 = new Phone("华为", 9999);Phone p4 = new Phone("vivo", 2999);//添加数据list.add(p1);list.add(p2);list.add(p3);list.add(p4);ArrayList<Phone> info = getPhoneInfo(list);//遍历for (int i = 0; i < info.size(); i++) {System.out.print(info.get(i).getBrand() + "," + info.get(i).getPrice() + " ");}}public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {//返回多个数据,可以把这些数据先放到一个容器之中,再把容器返回ArrayList<Phone> resultList = new ArrayList<>();for (int i = 0; i < list.size(); i++) {if (list.get(i).getPrice() < 3000) {resultList.add(list.get(i));}}return resultList;}
}class Phone {private String brand;private int price;public Phone() {}public Phone(String brand, int price) {this.brand = brand;this.price = price;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}
}

相关文章:

Arraylist集合

保存数据会经常使用到数组&#xff0c;但数组存在以下几个缺陷: 长度固定&#xff1b;保存的必须为同一类型的元素&#xff0c;&#xff08;基本数据类型&#xff0c;或引用数据类型&#xff09;&#xff1b;使用数组进行增加元素的步骤比较麻烦&#xff1b; 这个时候就需要用一…...

https的原理和方案

文章目录 https原理为什么要加密常见的加密方式对称加密非对称加密数据摘要&&数据指纹数据签名 https的几种工作方案方案一&#xff1a;只使用对称加密方案二&#xff1a;只使用非对称加密方案三&#xff1a;两端都使用非对称加密方案四&#xff1a;非对称加密 对称加…...

VTK 判断一个 点 是否在一个模型 stl 内部 vtk 点是否在内部 表面 寻找最近点

判断 一个点 ,判断是否在风格 stl 模型内部&#xff0c;或表面&#xff1a; 目录 1.方案一&#xff1a;使用vtkCellLocator FindClosestPoint 找到模型上距离给定点最近的一点&#xff0c;计算两点的距离 &#xff0c;小于某一阈值 则认为此点在模型上&#xff1b; 2.方案二…...

【数据结构OJ题】链表的回文结构

原题链接&#xff1a;https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?tpId49&&tqId29370&rp1&ru/activity/oj&qru/ta/2016test/question-ranking 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 在做这道…...

Nginx常见的三个漏洞

目录 $uri导致的CRLF注入漏洞 两种常见场景 表示uri的三个变量 案例 目录穿越漏洞 案例 Http Header被覆盖的问题 案例 $uri导致的CRLF注入漏洞 两种常见场景 用户访问http://example.com/aabbcc&#xff0c;自动跳转到https://example.com/aabbcc 用户访问http://exa…...

爬虫逆向实战(十六)--某建筑市场平台

一、数据接口分析 主页地址&#xff1a;某建筑市场平台 1、抓包 通过抓包可以发现数据接口是list 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通过查看“响应”模块可以发现&#xff0c;返回的响应是…...

用Python做一个滑雪小游戏

游戏是让人娱乐和放松的好方式&#xff0c;而编写和玩自己的游戏则是一种特别有趣的体验。在本文中&#xff0c;我们将使用Python和pygame库来创建一个简单的滑雪小游戏。通过这个小游戏项目&#xff0c;我们将学习如何使用Python编程语言来制作自己的游戏&#xff0c;并且享受…...

EXCEL按列查找,最终返回该列所需查询序列所对应的值,VLOOKUP函数

EXCEL按列查找&#xff0c;最终返回该列所需查询序列所对应的值 示例&#xff1a;国标行业分类汉字&#xff0c;匹配id 使用VLOOKUP函数 第一参数&#xff1a;拿去查询的值。 第二参数&#xff1a;匹配的数据。 Ps&#xff1a;Sheet1!$C 21 : 21: 21:E 117 &#xff0c;需要…...

java编译报错,get方法报错

java编译报错&#xff0c;get方法报错 处理方式&#xff1a; 在空间中&#xff0c;将 buid 文件夹删除 再不行的话&#xff0c;重启电脑&#xff0c;删除各种缓存 试试...

可以降低CPU负载的网络传输技术——LSO

LSO 是个啥&#xff1f; Large Send Offload&#xff08;LSO&#xff09;是一种网络传输协议技术&#xff0c;旨在提高网络传输的性能和效率。它通过将大型数据包拆分成小型数据包&#xff0c;降低网络传输负载&#xff0c;提高传输速度。 在传统的网络传输协议中&#xff0c…...

[管理与领导-25]:IT基层管理者 - 团队管理 - 如何留人, 如何留住关键人才

目录 一、离职前的五大信号&#xff0c;你读懂了吗&#xff1f; 二、员工为什么会离职 三、如何留住关键人才 一、离职前的五大信号&#xff0c;你读懂了吗&#xff1f; 离职前的信号是指员工可能在准备离职之前表现出的一些迹象或行为。 这些信号可以帮助雇主或同事们察觉…...

【Redis】Redis 的学习教程(二)之 Jedis

仅仅知道 Redis 服务端的操作知识&#xff0c;还是远远不够的&#xff0c;如果想要真正在项目中得到应用&#xff0c;我们还需要一个 Redis 的客户端&#xff0c;然后将其集成到项目中&#xff0c;让程序自动根据我们的业务需要自动处理。 基于 Redis 开放的通信协议&#xff…...

VB+SQL银行设备管理系统设计与实现

摘要 随着银行卡的普及,很多地方安装了大量的存款机、取款机和POS机等银行自助设备。银行设备管理系统可以有效的记录银行设备的安装和使用情况,规范对自助设备的管理,从而为用户提供更加稳定和优质的服务。 本文介绍了银行设备管理系统的设计和开发过程,详细阐述了整个应…...

Python系统学习1-9-类一之类语法

一、类之初印象 1、类就是空表格&#xff0c;将变量&#xff08;列名&#xff09;和函数&#xff08;行为&#xff09;结合起来 2、创建对象&#xff0c;表达具体行 3、创建类就是创建数据的模板 --操作数据时有提示 --还能再组合数据的行为 --结构更加清晰 4、类的内存分配…...

PHP“深入浅出”淘宝商品详情数据接口获取方法,淘宝API申请指南

获取淘宝商品详情数据的方法如下&#xff1a; 确定监控对象&#xff0c;通常是与自己店铺的商品相似的竞品&#xff0c;通过在淘宝商品详情页的URL中获取商品ID&#xff0c;进而获取商品的详情数据。通过API接口获取商品详情数据&#xff0c;申请开发者账号并获取授权访问&…...

线性代数再回顾

最近&#xff0c;在深度学习线性代数&#xff0c;之前大一的时候学过线性代数&#xff0c;但那纯属于是应试用的&#xff0c;考试一考完&#xff0c;啥都忘了&#xff0c;也说出不出个所以然&#xff0c;所以&#xff0c;在B站的MIT的线性代数以及3blue1brown线性代数的本质中去…...

(白帽黑客)自学笔记

一、前言&#xff1a; 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以…...

基于长短期神经网络的客流量预测,基于长短期神经网络的超短期客流量预测,lstm详细原理

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的客流量预测 完整代码: 基于长短期神经网络LSTM的公交站客流量预测资源-CSDN文库 https://download.csdn.net/download/abc991835105/88184734 效果图 结果分析 展望 参考论文 背影 碳排放越来越受到重…...

前端文件下载通用方法

zip文件和xlsx文件 import axios from axios import { getToken } from /utils/authconst mimeMap {xlsx: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,zip: application/zip }const baseUrl process.env.VUE_APP_BASE_API // zip下载 export functi…...

htmlCSS-----案例展示

目录 前言 作品效果 html代码 CSS代码 图片资源 前言 在学习html过程中我们要试着去写写一些案例&#xff0c;通过这些案例让我们更加熟悉代码以及丰富我们的经验&#xff0c;下面是我个人写的一个案例&#xff0c;代码和图片也给出了大家&#xff0c;你们可以参考参考。…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...