杰瑞科技汇

Java ArrayList元素如何操作与管理?

什么是 ArrayList

ArrayList 是一个动态数组的实现,它是一个可以动态改变大小的数组,也就是说,你可以在运行时向其中添加或删除元素,而无需像普通数组那样预先指定大小。

Java ArrayList元素如何操作与管理?-图1
(图片来源网络,侵删)

它的核心特点:

  • 有序:元素按照你添加的顺序存储(即插入顺序)。
  • 可重复:可以存储多个相同的元素。
  • 动态扩容:当元素数量超过当前容量时,ArrayList 会自动扩容(通常是创建一个更大的新数组,并将旧数组元素复制过去)。
  • 非线程安全:在多线程环境下,如果多个线程同时修改一个 ArrayList,可能会导致数据不一致,如果需要线程安全,可以使用 VectorCollections.synchronizedList() 包装。

ArrayList 元素的核心操作

下面我们通过代码示例来学习如何对 ArrayList 的元素进行各种操作。

创建 ArrayList 并指定元素类型

使用泛型 <> 来指定 ArrayList 中可以存储的元素类型,这保证了类型安全。

import java.util.ArrayList;
// 创建一个只能存储 String 类型元素的 ArrayList
ArrayList<String> stringList = new ArrayList<>();
// 创建一个只能存储 Integer 类型元素的 ArrayList
ArrayList<Integer> numberList = new ArrayList<>();
// 创建时指定初始容量(可选)
// ArrayList<Integer> bigList = new ArrayList<>(100); // 初始容量为100

添加元素

使用 add() 方法向列表末尾添加元素。

Java ArrayList元素如何操作与管理?-图2
(图片来源网络,侵删)
stringList.add("Apple");
stringList.add("Banana");
stringList.add("Orange");
// 在指定位置插入元素
stringList.add(1, "Grape"); // 在索引 1 的位置插入 "Grape"
System.out.println("当前列表: " + stringList);
// 输出: 当前列表: [Apple, Grape, Banana, Orange]

访问元素

通过索引(从 0 开始)来访问元素。

// 获取指定索引的元素
String firstFruit = stringList.get(0); // 获取索引为 0 的元素 "Apple"
System.out.println("第一个水果是: " + firstFruit);
// 获取列表大小(元素个数)
int size = stringList.size();
System.out.println("列表中共有 " + size + " 种水果");

修改元素

通过索引来修改指定位置的元素。

// 修改指定索引的元素
stringList.set(2, "Peach"); // 将索引 2 的元素 "Banana" 修改为 "Peach"
System.out.println("修改后的列表: " + stringList);
// 输出: 修改后的列表: [Apple, Grape, Peach, Orange]

删除元素

有多种删除方式:

// a. 删除指定索引的元素
stringList.remove(1); // 删除索引 1 的元素 "Grape"
// b. 删除第一个匹配的指定元素(注意:这里比较的是值,不是索引)
boolean removed = stringList.remove("Orange"); // 删除元素 "Orange"
System.out.println("是否成功删除 'Orange': " + removed);
System.out.println("删除后的列表: " + stringList);
// 输出: 删除后的列表: [Apple, Peach]

检查元素是否存在

使用 contains() 方法检查列表中是否包含某个元素。

Java ArrayList元素如何操作与管理?-图3
(图片来源网络,侵删)
boolean hasApple = stringList.contains("Apple");
boolean hasGrape = stringList.contains("Grape");
System.out.println("列表中是否有 'Apple': " + hasApple); // true
System.out.println("列表中是否有 'Grape': " + hasGrape); // false

ArrayList 元素的遍历

遍历是处理列表中每个元素的常见操作,主要有以下几种方式:

使用 for 循环(通过索引)

这是最传统的方式,适用于需要知道当前元素索引的场景。

System.out.println("--- 使用 for 循环遍历 ---");
for (int i = 0; i < stringList.size(); i++) {
    String fruit = stringList.get(i);
    System.out.println("索引 " + i + ": " + fruit);
}

使用增强 for 循环(for-each)

这是最简洁、最推荐的方式,适用于只需要元素的值,不需要索引的场景。

System.out.println("--- 使用 for-each 循环遍历 ---");
for (String fruit : stringList) {
    System.out.println("水果: " + fruit);
}

使用迭代器

迭代器是一种更安全、更专业的遍历方式,尤其是在遍历过程中需要删除元素时,使用 for-each 循环删除元素会抛出 ConcurrentModificationException 异常。

System.out.println("--- 使用迭代器遍历 ---");
// 创建迭代器
java.util.Iterator<String> iterator = stringList.iterator();
while (iterator.hasNext()) {
    String fruit = iterator.next();
    System.out.println("迭代器获取的水果: " + fruit);
    // 示例:如果水果是 "Peach",就删除它
    if ("Peach".equals(fruit)) {
        iterator.remove(); // 使用迭代器的 remove 方法,而不是 list.remove()
    }
}
System.out.println("迭代器删除后的列表: " + stringList);
// 输出: 迭代器删除后的列表: [Apple]

实际应用示例:学生名单管理

让我们用一个完整的例子来巩固这些知识。

import java.util.ArrayList;
public class StudentListManager {
    public static void main(String[] args) {
        // 1. 创建一个存储学生姓名的 ArrayList
        ArrayList<String> studentList = new ArrayList<>();
        // 2. 添加学生
        System.out.println("正在添加学生...");
        studentList.add("张三");
        studentList.add("李四");
        studentList.add("王五");
        studentList.add(1, "赵六"); // 在李四前面插入赵六
        System.out.println("当前学生名单: " + studentList);
        // 3. 查看学生
        System.out.println("\n查看学生信息:");
        System.out.println("第一位学生是: " + studentList.get(0));
        System.out.println("总共有 " + studentList.size() + " 名学生。");
        // 4. 修改学生信息
        System.out.println("\n修改学生信息:");
        studentList.set(3, "孙七"); // 将王五改为孙七
        System.out.println("修改后的名单: " + studentList);
        // 5. 删除学生
        System.out.println("\n删除学生:");
        studentList.remove("赵六"); // 按姓名删除
        System.out.println("删除赵六后的名单: " + studentList);
        // 6. 遍历并打印所有学生
        System.out.println("\n--- 遍历所有学生 ---");
        for (String student : studentList) {
            System.out.println("学生姓名: " + student);
        }
        // 7. 检查学生是否存在
        System.out.println("\n检查学生是否存在:");
        boolean hasZhangSan = studentList.contains("张三");
        System.out.println("名单中是否有张三? " + hasZhangSan);
    }
}
操作 方法 描述
创建 new ArrayList<>() 创建一个空的 ArrayList
添加 add(E element) 在列表末尾添加元素。
add(int index, E element) 在指定索引位置插入元素。
访问 get(int index) 获取指定索引的元素。
size() 获取列表中元素的个数。
修改 set(int index, E element) 修改指定索引的元素。
删除 remove(int index) 删除指定索引的元素。
remove(Object o) 删除第一个匹配的指定元素。
检查 contains(Object o) 检查列表中是否包含某个元素。
遍历 for 循环 (索引) 通过索引访问每个元素。
for-each 循环 简洁地遍历每个元素。
Iterator 安全地遍历,并在遍历时删除元素。

掌握 ArrayList 元素的这些基本操作,是进行更复杂 Java 开发的基础。

分享:
扫描分享到社交APP
上一篇
下一篇