Java数组与ArrayList

一、导言

在 Java 中,数组(Array)和 ArrayList 是两种最常用的数据容器。它们都可以存储一组数据,但在使用场景和操作方式上有很大区别。

二、基本用法
1.关于数组
数组(Array)是固定长度的“原始容器”

1.1 声明与初始化
如下
1)
int[] arr1 = new int[5];
String[] arr2 = new String[3];

2)
int[] arr3 = {1, 2, 3, 4, 5};
String[] arr4 = {"A", "B", "C"};

3)
int[] arr5;
arr5 = new int[]{10, 20, 30};

1.2 访问与修改

int[] nums = {10, 20, 30};
System.out.println(nums[0]);
nums[1] = 25;
System.out.println(nums.length);

1.3 遍历数组

for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}

for (int n : nums) {
System.out.println(n);
}

1.4 数组的局限

· 长度固定:一旦创建,不能增减。
· 方法少:只有 .length 属性,没有 add、remove 等便捷方法。
· 类型单一:存储类型在声明时确定,不能混合存储
2二、ArrayList:动态扩容的“进阶容器”

ArrayList 是 Java 集合框架(Collection Framework)中最常用的类,它封装了数组,提供了更丰富的方法。

2.关于ArrayList
2.1 创建 ArrayList

import java.util.ArrayList;

// 方式1:无参构造,默认容量为 10(首次添加时分配)
ArrayList list1 = new ArrayList<>();

// 方式2:指定初始容量(优化性能)
ArrayList list2 = new ArrayList<>(20);

// 方式3:从另一个集合创建
ArrayList list3 = new ArrayList<>(list1);

2.2遍历 ArrayList
1)
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}

for (String s : list) {
System.out.println(s);
}

3)使用 Iterator(迭代器)
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}

三、常见误区

1.数组的 length 和 ArrayList 的 size()

int[] arr = new int[5];
System.out.println(arr.length); // 属性,无括号

ArrayList list = new ArrayList<>();
System.out.println(list.size()); // 方法,有括号
2.遍历时删除元素
//错误:用普通 for 删除会导致索引错乱
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("A")) {
list.remove(i); // 删除后后续元素前移,i 会跳过
}
}

//推荐使用 Iterator
Iterator it = list.iterator();
while (it.hasNext()) {
if (it.next().equals("A")) {
it.remove();
}
}

//或从后往前遍历(不常用)
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).equals("A")) {
list.remove(i);
}
}

四、总结

  1. 数组适合长度固定、元素类型单一、性能要求高的场景。
  2. ArrayList适合长度动态变化、需要频繁增删改查的场景。
posted @ 2026-06-28 17:33  Znkunft  阅读(8)  评论(0)    收藏  举报