Java常用语法——动态数组ArrayList

本文介绍了Java中的ArrayList,如何声明与创建,以及其add(), remove(), size(), set()和get()方法的使用。重点讲解了动态扩容和通过toArray()转换为普通数组的技巧。适合理解ArrayList的初学者和开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、ArrayList介绍

一般的数组需要提前确定数组的大小,而一旦确定数组大小之后,改变它就不太容易了,而且对于不知道元素数量的情况就不太友好了。

解决该问题的方法是使用Java中的ArrayList类,它是一种可以在增加或删除元素时自动调节数组容量的一种数组。

2、ArrayList基本使用

(1)声明和创建

ArrayList是一个采用类型参数的泛型类,所以也叫做泛型数组列表。为了指定数组列表保存的元素对象类型,需要用一对尖括号 '<>'将类名括起来加在后面:ArrayList<E> arr_name = new ArrayList<E>();   其中E表示数组要存储的元素类型。

// 声明和构造一个保存Employee对象的数组列表
ArrayList<Employee> staff = new ArrayList<Employee>();

// 右边类型参数可以省略
ArrayList<Employee> staff = new ArrayList<>();

// 也可以像普通数组那样,规定数组初始容量
ArrayList<Employee> staff = new ArrayList<>(100);  
// 这只表明动态数组staff拥有保存100个元素的潜力,实际上可以保存更多的元素,这是与普通数组不同的地方

(2)添加元素——add()方法

使用add()方法可以将元素添加到数组列表中

// 在动态数组staff尾部添加元素
staff.add(new Employee(...));

// 在指定位置添加元素
int n = staff.size() / 2;
staff.add(n, e);

(3)删除元素——remove()方法

// 删除staff指定位置元素
Employee e = staff.remove(n);

(4)数组列表元素个数——size()

size()方法返回数组列表中实际包含的元素数量,等价于数组a的a.length。

// 求staff的实际元素数量
int size = staff.size();

(4)访问数组列表元素——set()和get()

不同于数组直接用索引下标 [ ]的语法格式直接访问元素,元素列表ArrayList要通过get和set方法实现访问或改变数组元素的操作。

// 更改第i个元素
staff.set(i, harry);  // 将staff中元素i,更改为harry,等价于  a[i] = harry

// set方法只能替换数组中已经存在的元素内容,而add方法是添加新的元素,不要混淆了
// 获得数组列表元素
Employee e = staff.get(i);  // 等价于 Employee e = a[i]

(5)使用 for each 循环遍历数组列表

// for each 遍历数组列表
for(Employee e : staff){
    do somethin with e;
}

// 以上代码等同于以下
for(int i = 0; i < staff.size(); i++){
    Employee e = staff.get(i);
    do somethin with e;
}

(6)ArrayList灵活运用

下面这个技巧可以一举两得,既可以灵活扩展数组,又可以方便访问数组元素。

首先,创建一个动态数组,并添加所有元素

// 创建动态数组
ArrayList<X> list = new ArrayList<>();

// 添加元素
list.add(x1);
lsit.add(x2);
......

然后,使用toArray方法将动态数组元素拷贝到一个数组中

// 创建普通数组
X[] a = new X[list.size()];

// 动态数组内容拷贝到普通数组中
list.toArray(a);

这样就可以通过普通数组的 [ ] 语法格式访问数组了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值