在 Java 学习过程中,很多同学对 ArrayList 的理解还停留在“会用 add/get/remove”阶段,甚至拿它当作普通数组使用;实际上,ArrayList 是 Java 集合框架中最重要的动态数组类,它的灵活性和实用性在日常开发中无处不在;

本文我将从零基础案例出发,带你彻底理解 ArrayList 的内部逻辑、常用操作以及实战效果展示,让你在写代码时不仅知道怎么用,还能理解为什么这样用;

一、ArrayList 基础概念

ArrayList 是 Java 集合框架(Collection Framework)中 动态数组实现类,类似于c++的vector;

可以存储任意对象(通过泛型指定类型),动态扩容,不需要提前定义长度,可重复存储元素,提供丰富方法操作元素(增删改查)

相比普通数组:

特性 数组 ArrayList
长度 固定 动态,可扩容
操作 索引 提供方法:add、remove、get、set
类型 基本类型或对象 泛型对象更安全

小结:ArrayList 就是“可变数组”,比普通数组更灵活,尤其适合管理对象集合。


二、创建 ArrayList

代码示例
import java.util.ArrayList;

public class Demo {
    public static void main(String[] args) {
        // 创建 ArrayList 存储文章对象
        ArrayList<String> articles = new ArrayList<>();

        // 添加文章
        articles.add("Java基础入门");
        articles.add("ArrayList深度解析");
        articles.add("面向对象实践");

        // 输出全部文章
        System.out.println("文章列表:" + articles);
    }
}

输出效果

文章列表:[Java基础入门, ArrayList深度解析, 面向对象实践]

说明

  • add() 方法添加元素

  • 输出直接使用 System.out.println(),ArrayList 会自动调用 toString()


三、ArrayList 常用方法及实战效果

1. 添加元素:add()   类似于c++的push_back();
articles.add("多态实战");
System.out.println("添加新文章后:" + articles);

效果

添加新文章后:[Java基础入门, ArrayList深度解析, 面向对象实践, 多态实战]
2. 获取元素:get(index)
String firstArticle = articles.get(0);
System.out.println("第一篇文章:" + firstArticle);

效果

第一篇文章:Java基础入门

tip:索引从 0 开始,越界会报 IndexOutOfBoundsException

3. 修改元素:set(index, element)
articles.set(1, "ArrayList使用指南");
System.out.println("修改后文章列表:" + articles);

效果

修改后文章列表:[Java基础入门, ArrayList使用指南, 面向对象实践, 多态实战]
4. 删除元素:remove(index 或 object)
articles.remove(2); // 删除第三篇
System.out.println("删除后文章列表:" + articles);

效果

删除后文章列表:[Java基础入门, ArrayList使用指南, 多态实战]

也可以按对象删除:

articles.remove("多态实战");
System.out.println("按对象删除后:" + articles);

效果

按对象删除后:[Java基础入门, ArrayList使用指南]
5. 判断是否包含元素:contains()
boolean hasJava = articles.contains("Java基础入门");
System.out.println("是否包含 Java 基础入门?" + hasJava);

效果

是否包含 Java 基础入门?true
6. 获取元素个数:size()
System.out.println("文章总数:" + articles.size());

效果

文章总数:2
7. 判断是否为空:isEmpty()
System.out.println("文章列表是否为空?" + articles.isEmpty());

效果

文章列表是否为空?false

四、结合对象使用 ArrayList

ArrayList 不仅可以存字符串,还可以存对象。比如存文章对象 Article:

class Article {
    private int id;
    private String title;
    public Article(int id, String title){
        this.id = id;
        this.title = title;
    }
    public void show(){
        System.out.println(id + " - " + title);
    }
}

使用 ArrayList 存对象:

ArrayList<Article> list = new ArrayList<>();
list.add(new Article(1, "Java入门"));
list.add(new Article(2, "ArrayList实战"));

for(Article a : list){
    a.show();
}

效果

1 - Java入门
2 - ArrayList实战

说明:直接存对象可以存储更多属性调用对象方法操作元素更灵活

五、ArrayList 高级技巧

  1. 遍历方法
// for-each
for(Article a : list) a.show();

// 普通 for
for(int i=0; i<list.size(); i++) list.get(i).show();

// lambda + forEach
list.forEach(a -> a.show());
2.排序
list.sort((a1, a2) -> a1.getId() - a2.getId());
3.查找
Article find = list.stream().filter(a -> a.getId()==2).findFirst().orElse(null);
if(find != null) find.show();

通过这篇文章,我自己对 ArrayList 的理解提升了很多。最开始我只是把它当作一个“能存数据的数组”,但是在实际做文章管理系统的时候,我才真正体会到它的灵活性:不仅能动态增加或删除元素,还能存对象、调用对象方法、轻松遍历和排序。

如果你刚接触 Java 或正在学习集合类,我强烈建议你 边写边练:把每个方法都动手试一遍,观察输出结果,尝试存对象、修改对象、删除对象,慢慢你就能真正理解 ArrayList 的底层逻辑和使用技巧。

希望这篇文章对你理解 ArrayList 有所帮助,也欢迎在评论区分享你的小练习或项目经验,互相学习。记住,掌握 ArrayList,几乎就掌握了 Java 集合操作的核心能力,为后续学习 List、Set、Map 打下坚实基础!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐