Java ArrayList 基础操作实战笔记
前言
ArrayList 是 Java 集合框架中 java.util 包下的核心类,本质是支持动态扩容的数组,相比普通数组更灵活,可动态添加、删除元素。本文整理了课堂上 ArrayList 基础操作的练习代码,系统总结核心用法,帮助巩固基础。
一、ArrayList 基础准备
1. 导入核心包
使用 ArrayList 必须先导入对应的包,若涉及迭代器遍历需额外导入迭代器包:
java
import java.util.ArrayList;
// 迭代器遍历专用
import java.util.Iterator;
2. 初始化集合
创建指定元素类型的 ArrayList(示例为字符串类型),泛型 <String> 用于限定集合仅能存储字符串元素:
java
ArrayList<String> list = new ArrayList<String>();
二、核心方法实战
1. 添加元素:add()
提供两种添加方式,适配不同场景:
- 尾部添加 :
add(元素),直接将元素追加到集合末尾 - 指定索引添加 :
add(索引, 元素),在指定位置插入元素,后续元素自动后移
课堂代码示例(TestOne/Test 类):
java
// 尾部添加元素
list.add("青城");
list.add("博雅");
// 在索引1的位置插入"gc"
list.add(1,"gc");
System.out.println(list); // 输出:[青城, gc, 博雅]
2. 获取元素:get()
通过索引获取集合中的元素,索引从 0 开始,语法:get(索引)
课堂代码示例(Test/TestEight 类):
java
// 获取索引为1的元素
System.out.println(list.get(1)); // 输出:博雅
// 结合普通for循环遍历所有元素
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
3. 修改元素:set()
替换指定索引位置的元素,语法:set(索引, 新元素)
课堂代码示例(TestSecond 类):
java
list.add("qc");
list.add("by");
System.out.println(list); // 输出:[qc, by]
// 将索引1的元素替换为"wd"
list.set(1,"wd");
System.out.println(list); // 输出:[qc, wd]
4. 删除元素:remove()
两种删除方式,需注意区分使用场景:
- 按索引删除 :
remove(索引),返回被删除的元素 - 按元素删除 :
remove(元素),删除第一个匹配的元素,返回布尔值(是否删除成功)
示例1:按索引删除(TestFi 类)
java
list.add("qc");
list.add("by");
list.add("gc");
System.out.println(list.remove(1)); // 输出被删除元素:by
System.out.println(list); // 输出:[qc, gc]
示例2:按元素删除(TestSix 类)
java
list.add("青城");
list.add("博雅");
list.add("博雅");
list.add("教育");
System.out.println(list.remove("博雅")); // 输出:true(删除成功)
System.out.println(list); // 输出:[青城, 博雅, 教育](仅删除第一个"博雅")
5. 判断元素是否存在:contains()
语法:contains(元素),返回布尔值(true=存在,false=不存在)
课堂代码示例(TestFour 类):
java
list.add("qc");
list.add("by");
boolean flag = list.contains("gc");
System.out.println(flag); // 输出:false(集合无"gc")
6. 清空与判空:clear() + isEmpty()
clear():清空集合所有元素(集合对象仍存在,变为空集合)isEmpty():判断集合是否为空,返回布尔值
课堂代码示例(TestThir 类):
java
list.add("qc");
list.add("by");
System.out.println(list); // 输出:[qc, by]
list.clear(); // 清空集合
System.out.println(list.isEmpty()); // 输出:true
System.out.println(list); // 输出:[]
7. 获取集合长度:size()
语法:size(),返回集合中元素的个数(区别于数组的 length 属性)
课堂代码示例(Test 类):
java
list.add("青城");
list.add("博雅");
System.out.println(list.size()); // 输出:2
三、ArrayList 三种遍历方式
课堂练习覆盖 3 种常用遍历方式,按需选择即可:
1. 普通 for 循环(带索引)
适合需要操作索引的场景(如根据索引修改/删除元素)
java
// 来自 TestEight 类
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
2. 增强 for 循环(foreach)
语法简洁,无需关心索引,适合仅遍历元素的场景
java
// 来自 TestNine 类
for(String name : list){
System.out.println(name);
}
3. 迭代器(Iterator)
适合遍历过程中删除元素(避免 ConcurrentModificationException 异常)
java
// 来自 TestSeven 类
Iterator<String> ite = list.iterator();
while(ite.hasNext()){ // 判断是否有下一个元素
System.out.println(ite.next()); // 获取并打印下一个元素
}
四、核心总结
- ArrayList 是动态数组,无需指定初始长度(也可手动指定以优化性能);
- 索引从 0 开始,操作索引时需避免
IndexOutOfBoundsException(索引越界); remove()有两种重载方法,按索引删返回被删元素,按元素删返回布尔值;- 遍历方式按需选择:需索引用普通 for 循环、仅遍历用增强 for 循环、遍历删元素用迭代器;
- 所有操作均需导入
java.util.ArrayList包,迭代器遍历需额外导入java.util.Iterator。
通过课堂这些基础练习,可快速掌握 ArrayList 核心用法,后续可结合泛型、Collections 工具类进一步拓展应用场景。