ArrayList

目录

一、ArrayList是什么

二、ArrayList的使用

(1)导包

 (2)ArrayList的构造方法

三、ArrayList的常用方法

(1)添加元素

(2)删除元素

(3)获取元素

(4)获取元素下标

(5)修改元素

(6)判断元素是否在线性表中

(7)清空

(8)截取部分list

四、ArrayList的遍历

(1)for循环

(2)foreach

(3)迭代器


一、ArrayList是什么

ArrayList类是一个可以动态修改的数组,不同于普通数组,它没有固定的大小限制,可以添加或删除元素,继承于 AbstractList 类,实现了List接口。

注:ArrayList是以泛型方式实现的,使用时必须先实例化

二、ArrayList的使用

(1)导包

ArrayList类位于 java.util 包中,使用前需要导包

import java.util.ArrayList;

 (2)ArrayList的构造方法

ArrayList()

无参构造方法,在调用该构造方法时,会构造一个空的线性表

ArrayList<Integer> arrayList = new ArrayList<>();

ArrayList(Collection<? extends E> c) 

 利用其他Collection构建ArrayList

?是通配符,?extends E :接收的类型为E类型或是E的子类

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);arrayList.add(2);arrayList.add(3);ArrayList<Number> arrayList1 = new ArrayList<>(arrayList);}
}

ArrayList(int initialCapacity)

指定顺序表初始容量大小为 initialCapacity

//构造一个具有5个容量的列表
ArrayList<String> arrayList1 = new ArrayList<>(5); 

 当传入的参数小于0时,会抛出异常 IllegalArgumentException(创建的顺序表容量大小不能为负)

三、ArrayList的常用方法

(1)添加元素

ArrayList可以使用add()方法来添加元素

boolean add(E e) //在线性表尾添加元素e,添加成功返回true,失败返回false

void add(int index, E e) //在index位置插入元素e 

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>(3);arrayList.add(3);arrayList.add(4);arrayList.add(0,1);System.out.println(arrayList);//输出结果:[1,3,4]}
}

(2)删除元素

E remove(int index) //删除 index 位置的元素,并返回 index 位置的元素

 boolean remove(Object o) //删除第一个元素o,删除成功返回true,删除失败,返回false

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>(3);arrayList.add(3);arrayList.add(4);arrayList.add(4);arrayList.add(0,1);System.out.println(arrayList);//输出结果:[1,3,4,4]System.out.println(arrayList.remove(0));//输出结果:1Integer integer = 4;System.out.println(arrayList.remove(integer));//输出结果:trueinteger = 5;System.out.println(arrayList.remove(integer));//输出结果:falseSystem.out.println(arrayList);//输出结果:[3,4]}
}

(3)获取元素

E get(int index) //获取下标为 index 位置的元素

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>(3);arrayList.add(3);arrayList.add(4);arrayList.add(5);arrayList.add(0,1);Integer integer = arrayList.get(2);System.out.println(integer);//输出结果为5}
}

arrayList中有n个元素,index的取值应在 [0,n) 之间,否则,抛出 IndexOutOfBoundsException 索引越界异常

(4)获取元素下标

int indexOf(Object o) //返回第一个o所在下标,o不存在于列表中则返回-1

int lastIndexOf(Object o) //返回最后一个o的下标,o不存在于列表中则返回-1

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);Integer integer = 4;System.out.println(arrayList.indexOf(integer));//输出结果:1System.out.println(arrayList.lastIndexOf(integer));//输出结果:2integer = 0;System.out.println(arrayList.indexOf(integer));//输出结果:-1}
}

(5)修改元素

E set(int index, E e) //将下标为 index 位置的元素修改为 e,并返回 index 位置原来的元素

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);Integer integer = arrayList.set(0,2);System.out.println(integer);//输出结果为3}
}

(6)判断元素是否在线性表中

boolean contains(Object o) //判断o是否在线性表中,在,返回true;不在,返回 false

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);Integer integer = 4;System.out.println(arrayList.contains(integer));//输出结果:trueinteger = 0;System.out.println(arrayList.contains(integer));//输出结果:false}
}

(7)清空

void clear() //清空线性表

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);arrayList.clear();System.out.println(arrayList);//输出结果:[]}
}

(8)截取部分list

List<E> subList(int fromIndex, int toIndex) //截取集合中[fromIndex, toIndex)区间的元素

subList是List接口中定义的一个方法,用于返回集合中的一段,即从 fromIndex (包含该位置元素)位置,到 toIndex (不包含该位置元素)位置的元素,方法的返回值类型是List,且用ArrayList接收,否则会抛出 ClassCastException 异常。

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);List<Integer> list = arrayList.subList(0,2);System.out.println(list);//输出结果:[3,4]}
}

 

 若要用ArrayList接收方法的返回值,可以对其进行强制类型转换

四、ArrayList的遍历

ArrayList可以使用三种方式进行遍历,分别是 for循环、foreach 和 迭代器

(1)for循环

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);arrayList.add(5);for (int i = 0; i < arrayList.size(); i++) {System.out.print(arrayList.get(i) + " ");}}
}

(2)foreach

foreach中第一个参数是数组元素或集合元素的类型,i是形参名, 第二个参数是数组或集合,foreach自动将数组或集合元素依次赋值给变量i,当每个元素都被迭代一次后,foreach自动结束循环

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);arrayList.add(5);for (Integer i: arrayList) {System.out.print(i + " ");}}
}

(3)迭代器

Iterator对象称为迭代器,用于遍历集合中的元素,实现了Collection接口的集合类都有一个 iterator() 方法,用于返回一个实现了Iterator接口的对象

Iterator接口的方法:

hasNext():是否有下一个元素,有则返回true;没有则返回false

next():返回迭代的下一个元素

public class Test {public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(3);arrayList.add(4);arrayList.add(4);arrayList.add(5);Iterator<Integer> iterator = arrayList.iterator();while (iterator.hasNext()){System.out.print(iterator.next() + " ");}}
}

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

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

相关文章

一场深刻的开源聚会:KCC@北京 9.2 活动回顾

开源为我们带来了什么&#xff1f;这是这场聚会的宣传文的标题&#xff1a;https://mp.weixin.qq.com/s/5sR6TPEpQmYNBnCtVilkzg 同样这个问题也可以是极具个体化的&#xff1a;开源为我带来了什么&#xff1f;秋天的周末&#xff0c;预报有雨&#xff0c;北京的开源人还是相聚…

《golang设计模式》第二部分·结构型模式-05-门面模式Facade)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.2 类图 1. 概述 门面&#xff08;Facade&#xff09;向客户端提供使用子系统的统一接口&#xff0c;用于简化客户端使用子系统的操作。 1.1 角色 门面角色&#xff08;Facade&#xff09; 客户端可以调用的接…

【Spring面试】三、Bean的配置、线程安全、自动装配

文章目录 Q1、什么是Spring Bean&#xff1f;和对象有什么区别Q2、配置Bean有哪几种方式&#xff1f;Q3、Spring支持的Bean有哪几种作用域&#xff1f;Q4、单例Bean的优势是什么&#xff1f;Q5、Spring的Bean是线程安全的吗&#xff1f;Q6、Spring如何处理线程并发问题&#xf…

C语言——指针进阶(三)

目录 一.前言摘要 二.排序函数qsort的模拟实现 三.指针和数组笔试题解析 一.前言摘要 讲述关于strlen和sizeof对于各种数组与指针的计算规则与用法。另外还有qsort函数的模拟实现&#xff08;可以排序任意类型变量&#xff09; 二.排序函数qsort的模拟实现 目标&#xff1a;…

uniapp 模糊搜索(小白必看)

实现模糊搜索很简单,按照下面的步骤: 1. 搜索栏 <view class"search-box"><uni-search-bar class"uni-mt-10" radius"100" placeholder"请输入移交信息" clearButton"auto" bgColor"#F8F8F8"cancelBut…

开源库源码分析:Okhttp源码分析(一)

开源库源码分析&#xff1a;OkHttp源码分析 导言 接下来就要开始分析一些常用开源库的源码了&#xff0c;作为最常用的网络请求库&#xff0c;OkHttp以其强大的功能深受Android开发者的喜爱&#xff08;比如说我&#xff09;&#xff0c;还有对该库进行二次封装而成的热门库&a…

怎样下载和安装HBuilder软件?【附HBuilder快捷键】

HBuilder是一款深度集成Eelipse的IDE编辑器&#xff0c;但其主要集中在Web前端的开发&#xff0c;不能进行Java等后台开发。HBuilder提供了对JavaScrijpt、jQuery、HTML5、MUI等语法的提示功能&#xff0c;同时包含很多快捷键&#xff0c;让前端开发更加便捷。 访问HBuilder官…

首家!亚信科技AntDB数据库完成中国信通院数据库迁移工具专项测试

近日&#xff0c;在中国信通院“可信数据库”数据库迁移工具专项测试中&#xff0c;湖南亚信安慧科技有限公司&#xff08;简称&#xff1a;亚信安慧科技&#xff09;数据库数据同步平台V2.1产品依据《数据库迁移工具能力要求》、结合亚信科技AntDB分布式关系型数据库产品&…

vue 使用canvas 详细教程

Vue.js 中使用 Canvas Vue.js 是一个流行的 JavaScript 框架&#xff0c;用于构建用户界面。它提供了一种简洁的方式来管理和渲染数据&#xff0c;同时也支持与其他库和工具的集成。要在 Vue.js 中使用 Canvas&#xff0c;您可以按照以下步骤进行操作&#xff1a; 在 Vue.js …

vue3+scss开启写轮眼

vue3scss开启写轮眼 一、相关技术二、使用步骤1.安装依赖2.眼球3 勾玉4 旋转动画5 综合 一、相关技术 采用vue3vitescss的技术内容进行开发 二、使用步骤 1.安装依赖 代码如下&#xff1a; npm install sass2.眼球 首先我们根据需要 将眼睛的基础形状描绘出来&#xff0c…

SkyWalking入门之Agent原理初步分析

一、简介 当前稍微上点体量的互联网公司已经逐渐采用微服务的开发模式&#xff0c;将之前早期的单体架构系统拆分为很多的子系统&#xff0c;子系统封装为微服务&#xff0c;彼此间通过HTTP协议RESET API的方式进行相互调用或者gRPC协议进行数据协作。 早期微服务只有几个的情况…

Springboot 实践(15)spring config 配置与运用—自动刷新

目前&#xff0c;网络上讲解spring config的自动刷新&#xff0c;都是通过git服务站的webhook功能执行“actuator/bus-refresh”服务实现的自动刷新。我们的前文讲解的配置中心&#xff0c;配置中心仓库使用的时本地地址&#xff0c;如下图所示&#xff1a; 那么&#xff0c;配…

vim的使用介绍以及命令大全

懒羊羊感谢大家的关注和三连支持~ 目录 前言 一、vim的使用介绍 二、命令大全 1.命令模式 &#xff08;1&#xff09;复制&#xff08;配合粘贴命令p使用&#xff09; &#xff08;2&#xff09;剪切 &#xff08;3&#xff09;粘贴 &#xff08;4&#xff09;删除 …

GIS前端编程-Leaflet插件扩展

GIS前端编程-Leaflet插件扩展 Leaflet插件扩展基本原理Leaflet插件扩展开发方法1. L.Handler扩展2. L.Control扩展为了高效率地进行软件开发 Leaflet插件扩展基本原理 Leaflet是面向移动设备和Web的开源JavaScript库&#xff0c;具有设计简单、性能良好和可用性强的特点&#…

c#.NET技术做到ChatGPT流式响应并实现打字机效果 实现ChatGPT的Stream传输

.NET技术做到ChatGPT流式响应并实现打字机效果 ChatGPT是当前备受瞩目的人工智能产品之一&#xff0c;它具备与人类进行智能对话的能力&#xff0c;同时能够理解人类的想法和需求。在内容创作、营销、智能客服、教育、投资等领域和场景中&#xff0c;ChatGPT都展现出了巨大的…

【openKylin】OpenKylin1.0 x86_64 VMWare安装手册

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

选择器进阶与表单表格

华子目录 选择器并集选择器后代选择器子代选择器伪类选择器伪元素选择器结构选择器属性选择器相邻选择器 表单&#xff08;form&#xff09;label标签 表格&#xff08;table标签&#xff09;合并单元格 选择器 下面是我们之前学习过的选择器 *{}&#xff1a;通配符选择器&am…

分销小程序商城功能_小程序商城适合谁_OctShop

微信推出小程序后&#xff0c;分销小程序商城就受到了非常多企业和商家的关注&#xff0c;通过分销商城小程序企业或商家就可以获得庞大的用户裂变过来的用户&#xff0c;组成一个不断裂变拉新用户的网络&#xff0c;可以大大提高企业或品牌的曝光度&#xff0c;从而提高企业或…

视频图像处理算法opencv模块硬件设计图像颜色识别模块

1、Opencv简介 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上 它轻量级而且高效——由一系列 C 函数和少量 C 类构成&#xff0c;同时提供了Python、Rub…

LeetCode 1282. Group the People Given the Group Size They Belong To【哈希表】1267

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…