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

Java ArrayList类详解

 基本定义

ArrayList 是 Java 中的一个动态数组数据结构,属于 Java 集合框架的一部分(java.util 包中的类)。它提供了一个基于数组的可变长度列表,允许你在运行时添加、删除和访问元素,而不需要提前指定数组的大小。

简而言之:它是Java函数库中数百个类中的一个,可以将它直接当作自己的类使用

ArrayList类的基础(部分)方法

add(Object elem):向list中加入对象参数,在 ArrayList 的末尾添加新元素

add(int index, Object elem):在index对应的下标中添加elem对象

remove(int index):移除对应索引的对象

remove(Object elem):移除该对象,默认只是移除第一个匹配的对象

contains(Object elem):检查是否包含该对象:有的话返回"true",否则返回"false"

isEmpty():如果list中没有元素则返回"true"

indexOf(Object elem):如果存在该对象,则返回对应下标,如果不存在,则返回-1

size():返回ArrayList当前的大小

get(int index):返回当前索引参数的对象

下面来举个例子来解释一下ArrayList的方法使用吧:

import java.util.ArrayList;class Egg {}public class testArrayList {public static void main(String[] args) {//1.创建:<括号>代表创建出Egg类型的basket//新的ArrayList对象会创建在堆上ArrayList<Egg> basket = new ArrayList<Egg>();//2.加入元素//此ArrayList会产生一个"筐子"来放Egg对象Egg s = new Egg();basket.add(s);//3.再加入元素//此ArrayList会再次整一个筐子来存放Egg对象Egg b = new Egg();basket.add(b);//4.查询大小//因为basket含有两个元素,size()会返回2int theSize = basket.size();//5.查询特定元素//因为basket带有s所引用的Egg对象,所以此方法会返回trueboolean isIn = basket.contains(s);//6.查询特定元素的位置//b是创建的第二个对象,因此返回1int idx = basket.indexOf(b);//7.判断集合是否为空//因为不是空的,所以返回falseboolean empty = basket.isEmpty();//8.删除元素basket.remove(s);}
}

比较ArrayList与一般数组

一般数组在创建时必须指定大小

但对于ArrayList来说,你只需要创建出此类型的对象就行。它不需要指定大小,因为他会在加入或删除元素时自动调整大小。

new String[2] //指定大小

new ArrayList<String>() //不需要指定大小

存放对象给一般数组时必须指定位置

(必须要指定介于0到比length小1之间的数字)

myList[1] = b;//指定索引值

如果索引值超出了数组的限制(例如声明大小为2的数组,然后指派索引值3),程序会在执行期出现错误。

使用ArrayList时,你可以用add(Int, Object)这个形式来指定索引值,或者使用add(Object)的形式来给它自行管理大小。

myList.add(b);//不需指定索引值

一般数组使用特殊的语法

但ArrayList是个普通对象,所以不会有特殊的语法。

myList[1]//[方括号]是指用在数组上的特殊语法

在Java5.0中的ArrayList是参数化的

虽然我们说ArrayList不想一般数组有特殊的语法,但是它们在Java5.0中有比较特殊的东西-参数化类型。

ArrayList<String> //<String>是类型参数。这代表String的集合,就像说ArraysList<Egg>代表Egg的集合

在Java5.0之前是无法声明出要存放于ArrayList中元素的类型,它只会是异质对象的集合

相关文章:

Java ArrayList类详解

基本定义 ArrayList 是 Java 中的一个动态数组数据结构&#xff0c;属于 Java 集合框架的一部分&#xff08;java.util 包中的类&#xff09;。它提供了一个基于数组的可变长度列表&#xff0c;允许你在运行时添加、删除和访问元素&#xff0c;而不需要提前指定数组的大小。 简…...

快速排序学习

由于之前做有一题看到题解用了快排提升效率&#xff0c;就浅学了一下快速排序&#xff0c;还是似懂非懂。 首先快排的核心有两点&#xff0c;哨兵划分和递归。 哨兵划分&#xff1a;以数组中的某个数&#xff08;一般为首位&#xff09;为基准数&#xff0c;将数组划分为两个部…...

【Vue3 知识第二讲】Vue3新特性、vue-devtools 调试工具、脚手架搭建

文章目录 一、Vue3 新特性1.1 重写双向数据绑定1.1.1 Vue2 基于Object.defineProperty() 实现1.1.2 Vue3 基于Proxy 实现 1.2 优化 虚拟DOM1.3 Fragments1.4 Tree shaking1.5 Composition API 二、 vue-devtools 调试工具三、环境配置四、脚手架目录介绍五、SFC 语法规范解析附…...

pytorch 基于masking对元素进行替换

描述 pytorch 基于masking对元素进行替换. 代码如下. 先展平再赋值. 代码 # map.shape [64,60,128] # infill.shape [64,17,128] # mask_indices.shape [64,60]map map.reshape(map.shape[0] * map.shape[1],map.shape[2]) [mask_indices.reshape(mask_indices.shape[0]*ma…...

Cyber RT学习笔记---7、Component组件认知与实践

7、Component组件认知与实践 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0c;还请大家多多指出。 课程地址: https://apollo.baidu.com/community/course/outline/329?activeId10200 更多还请参考: [1] Apollo星火计划学习笔记——第…...

常见配置文件格式INI/XML/YAML/JSON/Properties/TOML/HCL/YAML Front Matter/.env介绍及实例

1. 常见配置文件INI XML YAML JSON Properties介绍 以下是常见配置文件格式&#xff08;INI、XML、YAML、JSON、Properties、TOML、HCL、YAML Front Matter、.env&#xff09;的比较&#xff1a; 配置文件格式简介语法定义优点缺点常见使用场景常见编程语言INI简单的文本文件…...

JS 方法实现复制粘贴

背景 以前我们一涉及到复制粘贴功能&#xff0c;实现思路一般都是&#xff1a; 创建一个 textarea 标签 让这个 textarea 不可见&#xff08;定位&#xff09; 给这个 textarea 赋值 把这个 textarea 塞到页面中 调用 textarea 的 select 方法 调用 document.execCommand…...

后端面试话术集锦第 十六 篇:java锁面试话术

这是后端面试集锦第十六篇博文——java锁面试话术❗❗❗ 1. 介绍一下乐观锁和悲观锁 乐观锁的话就是比较乐观,每次去拿数据的时候,认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制或者CAS算法实现。 乐观…...

SystemVerilog 第5章 面向对象编程基础

5.1概述 对结构化编程语言,例如 Verilog和C语言来讲,它们的数据结构和使用这些数据结构的代码之间存在很大的沟壑。数据声明、数据类型与操作这些数据的算法经常放在不同的文件里,因此造成了对程序理解的困难。 Verilog程序员的境遇比C程序员更加棘手,因为Ⅴ erilog语言…...

指针进阶(1)

指针进阶 朋友们&#xff0c;好久不见&#xff0c;这次追秋给大家带来的是内容丰富精彩的指针知识的拓展内容&#xff0c;喜欢的朋友们三连走一波&#xff01;&#xff01;&#xff01; 字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* &#xff1b; 使用方法如…...

蝶形运算法

蝶形运算法是一种基于FFT&#xff08;Fast Fourier Transform&#xff09;算法的计算方法&#xff0c;其基本思想是将长度为N的DFT分解成若干个长度为N/2的DFT计算&#xff0c;并通过不断的合并操作得到最终的结果。该算法也称为“蝴蝶算法”&#xff0c;因为它的计算过程中需要…...

day 48|● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 dp的含义&#xff1a;指0开头&#xff0c;i- 1和j - 1为结尾的两个序列的删除最小数 递推公式方面&#xff1a; 初始化方面&#xff1a;前面0行和0列的初值要赋好 func minDistance(word1 string, word2 string) int {dp : make([][]int, len(wor…...

服务器(I/O)之多路转接

五种IO模型 1、阻塞等待&#xff1a;在内核将数据准备好之前&#xff0c;系统调用会一直等待。所有的套接字&#xff0c;默认都是阻塞方式。 2、非阻塞等待&#xff1a;如果内核没有将数据准备好&#xff0c;系统调用仍然会返回&#xff0c;并且会返回EWUOLDBLOCK或者EAGAIN错…...

后端面试话术集锦第 十三 篇:java集合面试话术

这是后端面试集锦第十三篇博文——java集合面试话术❗❗❗ 1. Java里常见的数据结构都有哪些以及特征 数组 数组是最常用的数据结构。 数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的。 列表 列表和数组很相似,只不过它的大小可以改变。 列表一般都是…...

《微服务架构设计模式》第一章

逃离单体地狱 FTGO单体架构 ​​​​​​​作者用国外FTGO公司&#xff08;一家做线餐饮外卖&#xff09;的应用程序举例&#xff0c;阐述了单体架构的优缺点。FTGO应用架构如下&#xff1a; 应用程序是单体应用&#xff0c;具有六边形架构&#xff0c;最内侧是业务逻辑&…...

前端是如何打包的

前端项目的打包过程通常涉及将多个源文件&#xff08;包括HTML、CSS、JavaScript等&#xff09;合并、优化和压缩&#xff0c;以生成最终用于生产环境的静态资源。这个过程可以使用构建工具和打包工具来自动化完成。以下是前端项目的常见打包步骤&#xff1a; 1. **源代码编写…...

Qt 5.15编译(MinGW)及集成Crypto++ 8.7.0笔记

一、背景 为使用AES加密库&#xff08;AES/CBC加解密&#xff09;&#xff0c;选用Crypto 库&#xff08;官网&#xff09;。   最新Crypto C库依次为&#xff1a;8.8.0版本&#xff08;2023-6-25&#xff09;、8.7.0&#xff08;2022-8-7&#xff09;和8.6.0&#xff08;202…...

Qt 简单闹钟

//wiget.h#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> //时间类 #include <QTimer> //定时器类 #include <QTextToSpeech> #include <QDebug> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPA…...

简单谈下Spring、Spring MVC和Spring Boot

Spring是一个开源的轻量级框架&#xff0c;用于构建Java应用程序。它提供了一种全面的编程和配置模型&#xff0c;可以帮助开发人员构建各种类型的应用程序&#xff0c;从简单的控制台应用程序到大型企业级应用程序。Spring框架的主要目标是提高应用程序的可维护性、可扩展性和…...

利用python进行视频下载并界面播放快速下载素材

工具&#xff1a;python designer&#xff08;python自带&#xff09;:UI界面设计工具 VLC&#xff1a;视频播放工具 需要的库如下&#xff1a; import os,platform os.environ[PYTHON_VLC_MODULE_PATH] "./vlc-3.0.14" import vlc from 脚本 import Player from …...

永磁同步电机参数辨识:EKF算法的奇妙之旅

卡尔曼滤波EKF算法&#xff0c;针对于永磁同步电机的电阻、电感等参数的辨识&#xff0c;辨识速度快&#xff0c;效果好&#xff0c;适合入门童鞋参考学习&#xff1a;本商品 包含以下内容&#xff1a; &#xff08;1&#xff09;采用SVPWM矢量控制&#xff1b; &#xff08;2&…...

BEYOND REALITY Z-Image实测:同一张脸,两种质感,细节对比一目了然

BEYOND REALITY Z-Image实测&#xff1a;同一张脸&#xff0c;两种质感&#xff0c;细节对比一目了然 今天我要带大家做一个有趣的实验。想象一下&#xff0c;你面前站着同一个人&#xff0c;但左边是手机快照&#xff0c;右边是专业单反拍摄的照片——这就是BEYOND REALITY Z…...

TripoSR:0.5秒从单图到3D模型,开源3D重建的革命性工具

TripoSR&#xff1a;0.5秒从单图到3D模型&#xff0c;开源3D重建的革命性工具 【免费下载链接】TripoSR 项目地址: https://gitcode.com/GitHub_Trending/tr/TripoSR TripoSR是一款由Tripo AI与Stability AI联合开发的开源单图像3D重建模型&#xff0c;能够在短短0.5秒…...

3步掌握MelonLoader:面向Unity开发者的游戏扩展加载器实战指南

3步掌握MelonLoader&#xff1a;面向Unity开发者的游戏扩展加载器实战指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader Unit…...

OpenClaw+nanobot镜像:个人社交媒体监控系统搭建

OpenClawnanobot镜像&#xff1a;个人社交媒体监控系统搭建 1. 为什么需要个人社交媒体监控系统 作为一个长期关注技术趋势的博主&#xff0c;我经常需要追踪社交媒体上的热点话题和关键词变化。过去我都是手动刷新各个平台&#xff0c;不仅效率低下&#xff0c;还容易错过关…...

【自然语言处理】BERTopic:解决文本主题分析的5个创新方案

#【自然语言处理】BERTopic&#xff1a;解决文本主题分析的5个创新方案 【免费下载链接】BERTopic Leveraging BERT and c-TF-IDF to create easily interpretable topics. 项目地址: https://gitcode.com/gh_mirrors/be/BERTopic 在信息爆炸的时代&#xff0c;如何从海…...

解锁外语游戏新体验:XUnity自动翻译器完全指南 [特殊字符]

解锁外语游戏新体验&#xff1a;XUnity自动翻译器完全指南 &#x1f3ae; 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏中的生涩文本而苦恼吗&#xff1f;XUnity自动翻译器让你轻松打破语…...

避坑指南:RuoYi-Vue2集成Flowable 6.7.2时,关于database-schema-update和nullCatalogMeansCurrent的配置详解

深度解析&#xff1a;RuoYi-Vue2集成Flowable 6.7.2的数据库配置陷阱与实战策略 当企业级应用需要引入工作流引擎时&#xff0c;Flowable因其轻量化和高性能成为许多开发团队的首选。然而在RuoYi-Vue2框架中集成Flowable 6.7.2版本时&#xff0c;数据库配置环节往往成为开发者的…...

Android14 SurfaceFlinger启动流程与线程调度机制解析

1. SurfaceFlinger的启动入口与初始化流程 Android显示系统的核心服务SurfaceFlinger由init进程启动&#xff0c;这个设计保证了它在系统早期就能准备好图形合成能力。main函数作为入口点&#xff0c;首先做了一系列关键初始化&#xff1a; 设置Binder线程池的最大线程数为4&…...

如何在Ozon产品测款?用CaptainAI精准锁定爆款潜力款

做Ozon运营&#xff0c;测款是店铺长期盈利的关键——选对款能事半功倍&#xff0c;测错款则会积压库存、浪费成本&#xff0c;中小卖家资金精力有限&#xff0c;盲目铺货测款易陷入“高投入、低回报”困境。很多卖家测款常踩坑&#xff1a;凭感觉跟风选热门款&#xff0c;竞争…...