Java基础语法---集合---ArrayList

ArrayList是什么

ArrayList可以看作是一个动态数组,提供了自动扩容的能力,意味着它能够根据需要自动调整其大小以容纳更多的元素,而无需预先指定数组的容量。


使用ArrayList需要加入包

import java.util.ArryList

ArrayList与普通数组的不同

一 、大小容量

普通数组:长度在创建时就必须确定,并且之后不能更改。
ArrayList:是动态数组的实现,其大小可以根据需要自动调整。

二 、类型存储

普通数组:可以直接存储基本类型(如int、double)和对象(如String、Object)。
ArrayList:由于ArrayList是基于Object数组实现的,因此它只能直接存储对象。
如果你要存储基本类型,需要使用它们的包装类来进行自动装箱和拆箱,这可能会影响性能。

Java的包装类包括:
Byte 对应 byte
Short 对应 short
Integer 对应 int
Long 对应 long
Float 对应 float
Double 对应 double
Character 对应 char
Boolean 对应 boolean

三 、API丰富性

普通数组:提供的功能较为基础,主要是通过索引来访问和修改元素。
ArrayList:提供了许多便利的方法

四 、内存使用和性能

普通数组:由于长度固定,没有额外的管理开销,且直接存储基本类型可以节省内存空间,因此在已知大小且不需要动态调整时,性能通常优于ArrayList。
ArrayList:动态扩容机制虽然提供了灵活性,但在扩容过程中涉及数组复制,可能会导致性能下降,尤其是在频繁插入和删除操作时。
存储对象类型和自动装箱/拆箱操作也会带来额外的内存和性能开销。

五 、遍历方式

普通数组:遍历通常通过for循环和索引进行。
ArrayList:传统的索引遍历外,还可以使用迭代器(Iterator)或列表迭代器(ListIterator)进行更灵活的遍历,支持foreach循环。

ArrayList的使用方法

构造方法

空构造

public ArrayList()

默认构造一个初始容量为 10 的空列表。

构造指定的容量

public ArrayList(int initialCapacity)

构造具有指定初始容量的空列表
在这里插入图片描述

构造将一个集合拷贝进去

public ArrayList(Collection<? extends E> c)

增加与减小元素

增加元素

使用add();
在这里插入图片描述
add(E element):可以添加一个元素在尾部
add(int index, E element):在某个索引添加元素
addAll(Collection<? extends E> c): 在列表末尾添加另一个集合的所有元素。
addAll(int index, Collection<? extends E> c): 从指定位置开始,插入另一个集合的所有元素。

addLast(E element);在尾部添加元素
addFirst(E element);在首部添加元素

减少元素

在这里插入图片描述
remove(Object o)
删除第一次遇到的o对象
remove(int index)
删除索引的元素
removeLast()
删去最后一个元素
removeFirst()
删去第一个元素
removeAll(Collection<?> c)
从当前列表中移除出现在指定集合c中的所有元素。这个方法会比较两个集合中的元素,并移除所有在当前列表中也存在于指定集合中的元素
removeIf(Predicate<? super E> filter)
根据提供的谓词(Predicate)来过滤并移除满足条件的元素。
在这里插入图片描述

访问与修改元素

访问元素

使用get(a);访问a位置的元素
使用getFirst();访问第一个元素
使用getLast();访问最后一个元素

import java.util.ArrayList;
public class Main{public static void main(String[] args){ArrayList<String> a = new ArrayList<>();a.add("A");a.add("B");a.add("C");a.add("D");a.add("E");System.out.println(a.get(2));       //CSystem.out.println(a.getFirst());   //ASystem.out.println(a.getLast());    //F}
}

修改元素

set(int index,E a)
改变索引位置的元素
在这里插入图片描述

查找元素

contains()
查找是否有该元素,有就返回ture如果没有false
在这里插入图片描述
indexOf()
找到了就返回第一个索引,没有就返回-1
lastindexOf()
找最后一个出现的索引,没找到就返回-1

在这里插入图片描述

容器操作

size()
返回容器的大小
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Si3N4/SiC纳米复相陶瓷综合性能明显提升 下游可应用范围广泛

Si3N4/SiC纳米复相陶瓷综合性能明显提升 下游可应用范围广泛 Si3N4/SiC纳米复相陶瓷&#xff0c;是以碳化硅&#xff08;SiC&#xff09;纳米颗粒为第二相&#xff0c;弥散进入氮化硅&#xff08;Si3N4&#xff09;基体相制备得到的新型陶瓷材料&#xff0c;对碳化硅陶瓷具有强…

Cannot add ‘xxxxxx‘to Logic Analyzer

问题描述&#xff1a;Keil 中&#xff0c;直接切换到仿真中并添加变量到逻辑分析仪&#xff0c;会报如题类型错误。 解决方法&#xff1a; 需要在先在执行main函数&#xff0c;生成变量内容&#xff0c;然后在添加到逻辑分析仪。具体方法是&#xff0c;在mian 中打断点——运…

小程序简单版录音机

先来看看效果 结构 先来看看页面结构 <!-- wxml --><view class"wx-container"><view id"title">录音机</view><view id"time">{{hours}}:{{minute}}:{{second}}</view><view class"btngroup"…

169.二叉树:完全二叉树的节点个数(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

“墨者杯”网络安全大赛wp

漏洞利用01 504错误修改为POST提交拿到php源码&#xff0c; 查看逻辑$_POST[roam1] ! $_POST[roam2] && sha1($_POST[roam1]) sha1($_POST[roam2]) 采用数组绕过 roam1[]1&roam2[]2 拿到phpinfo&#xff0c;观察发现 这里的意思是每个php页面都包含这个f14…

微服务网关Gateway(上)

大家好呀&#xff0c;我是苍何。 这年头&#xff0c;大家都在开始卷简历了&#xff0c;我也看了很多同学的简历&#xff0c;其中有一个同学的简历&#xff0c;我印象最为深刻&#xff0c;他的项目经历中&#xff0c;写了自定义 Gateway 过滤器实现统计接口调用耗时&#xff0c…

力扣141. 环形链表

Problem: 141. 环形链表 文章目录 题目描述思路复杂度Code 题目描述 思路 定义快慢指针fast、slow&#xff0c;当fast ! null && fast.next ! null时fast每次走两步、slow走一步&#xff0c;当fast和slow相遇时&#xff0c;则说明存在环 复杂度 时间复杂度: O ( n ) O…

无锡哲讯携手SAP,赋能装备制造业数字化转型

在当今快速发展的工业4.0时代&#xff0c;装备制造业作为国民经济的重要支柱&#xff0c;正面临着前所未有的机遇与挑战。无锡哲讯智能科技有限公司凭借其深厚的行业经验和专业的SAP实施能力&#xff0c;为装备制造业提供全面的数字化解决方案&#xff0c;助力企业实现智能化、…

知识图谱的应用---智慧政务

文章目录 智慧政务典型应用 智慧政务 智慧政务即通过“互联网政务服务”构建智慧型政府&#xff0c;利用云计算、移动物联网、人工智能、数据挖掘、知识管理等技术&#xff0c;提高政府在办公、监管、服务、决策中的智能水平&#xff0c;形成高效、敏捷、公开、便民的新型政府&…

TPM仿真环境搭建

文章目录 背景及注意事项一、CMake二、m4三、GNU MP Library四、TPM_Emulator五、TSS协议栈&#xff08;trousers-0.3.14.tar.gz&#xff09;六、 tpm-tools七、查看是否安装成功八、测试 TPM环境&#xff08;需要开三个终端分别运行&#xff09;8.1 启动TPM &#xff08;第一个…

有关大学的搜题软件?六个不限次的公众号和软件分享啦 #其他#职场发展

有些同学虽然喜欢刷题&#xff0c;但是如果参考答案遗失、找不到参考答案&#xff0c;导致做好的题目无法校对&#xff0c;就会比较烦恼了。不过不用担心&#xff0c;今天就给大家分享一些超好用的搜题工具 1.彩虹搜题 这是个老公众号了 它不仅可以查到大学题目&#xff0c;…

工厂为什么需要各种看板

人眼天生对图像识别速度更快更准确&#xff0c;例如图形&#xff0c;颜色等。人们往往更易于通过视觉信息来获取和理解信息&#xff0c;可视化的看板在工厂管理中也是司空见惯。 那么工厂看板如何帮助企业实现降本、提质、增效&#xff1f; 1、生产计划和生产进度的管理&#…

arm开发板移植sshd

移植sshd 文章目录 移植sshd1、准备工作2、编译zlib3、编译openssl4、编译openssh5、其他旧版本6、部署测试7、多用户配置8、sshd_config示例 1、准备工作 准备openssh-9.5p1.tar.gz openssl-1.1.1w.tar.gz zlib-1.2.11.tar.gz 我在http://10.45.156.100/IG2100/IG2100.git …

09.1手工制作docker镜像-多服务ssh+nginx

手工制作docker镜像-多服务sshnginx 一个容器多个服务 基于centos6.9系统添加yum源与epel源 安装nginx、ssh服务 yum install nginx openssh-server -y因镜像系统为纯系统&#xff0c;没有root密码&#xff0c;所以需要配置密码 echo 123456 | passwd --stdin root注&#x…

kafka-消费者组(SpringBoot整合Kafka)

文章目录 1、消费者组1.1、使用 efak 创建 主题 my_topic1 并建立6个分区并给每个分区建立3个副本1.2、创建生产者发送消息1.3、application.yml配置1.4、创建消费者监听器1.5、创建SpringBoot启动类1.6、屏蔽 kafka debug 日志 logback.xml1.7、引入spring-kafka依赖1.8、消费…

IT闲谈-WEB前端主流三大框架

目录 一、Angular二、React三、Vue.js小结 前言 这里给大家简单介绍一下web前端框架&#xff1b;随着互联网技术的飞速发展&#xff0c;Web前端技术也在不断地演进和更新。目前&#xff0c;前端比较多的三大主流前端框架Angular、React和Vue.js&#xff0c;成为前端开发者的得…

问题:棕色试剂瓶用于盛装见光易分解的试剂或溶剂。 #其他#学习方法#微信

问题&#xff1a;棕色试剂瓶用于盛装见光易分解的试剂或溶剂。 A、正确 B、错误 参考答案如图所示

响应式流规范解析

在互联网应用构建过程中&#xff0c;我们知道可以采用异步非阻塞的编程模型来提高服务的响应能力。而为了实现异步非阻塞&#xff0c;我们可以引入数据流&#xff0c;并对数据的流量进行控制。我们来考虑一个场景&#xff0c;如果数据消费的速度跟不上数据发出的速度&#xff0…

基于spring boot的超市管理系统【附:资料➕文档】

前言&#xff1a;我是源码分享交流Coding&#xff0c;专注JavaVue领域&#xff0c;专业提供程序设计开发、源码分享、 技术指导讲解、各类项目免费分享&#xff0c;定制和毕业设计服务&#xff01; 免费获取方式--->>文章末尾处&#xff01; 项目介绍&#xff1a; 网址 …

JWT及单点登录实现

JWT发展简史 JWT Token JSON Web Token (JWT&#xff0c;RFC 7519 (opens new window))&#xff0c;是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准&#xff08;(RFC 7519)。 ID Token OIDC (OpenID Connect) 协议 (opens new window)对 OAuth 2.0 协议 …