题目
使用ArrayList存储和遍历学生姓名
信息
- 类型:问答
- 难度:⭐
考点
ArrayList基本操作,泛型使用,集合遍历
快速回答
实现步骤:
- 创建泛型为String的ArrayList
- 使用add()方法添加学生姓名
- 使用增强for循环遍历列表
- 打印每个学生姓名
关键代码:
ArrayList<String> list = new ArrayList<>();
list.add("张三");
for(String name : list) {
System.out.println(name);
}
## 解析
1. 原理说明
ArrayList是Java集合框架中基于动态数组的实现,特点:
- 自动扩容:当元素超过容量时自动增长(默认扩容50%)
- 随机访问快:通过索引直接访问元素(时间复杂度O(1))
- 有序集合:保持元素添加顺序
- 非线程安全:不适合多线程环境
2. 完整代码示例
import java.util.ArrayList;
public class StudentListExample {
public static void main(String[] args) {
// 1. 创建泛型集合(限定元素类型为String)
ArrayList<String> studentNames = new ArrayList<>();
// 2. 添加元素
studentNames.add("王小明");
studentNames.add("李华");
studentNames.add("张小雨");
// 3. 遍历集合(增强for循环)
System.out.println("学生名单:");
for (String name : studentNames) {
System.out.println(" - " + name);
}
// 4. 获取集合大小
System.out.println("总人数: " + studentNames.size());
}
}3. 最佳实践
- 始终使用泛型:避免运行时类型错误,如
ArrayList<String> - 优先选择增强for循环:语法简洁且避免索引越界
- 预估初始容量:大数据量时用
new ArrayList(int initialCapacity)提升性能 - 使用isEmpty()判空:比
size()==0可读性更好
4. 常见错误
| 错误示例 | 问题说明 | 正确写法 |
|---|---|---|
ArrayList list = new ArrayList(); | 未使用泛型,需强制类型转换 | ArrayList<String> list = ... |
for(int i=0; i<=list.size(); i++) | 索引越界(最大索引为size-1) | i < list.size() |
list.get("张三") | get()只能接收索引参数 | list.indexOf("张三") |
5. 扩展知识
- 遍历方式对比:
- 增强for循环:只读遍历时推荐
- 迭代器(Iterator):需要删除元素时使用
- 普通for循环:需要索引时使用
- 与数组互转:
// ArrayList转数组 String[] array = studentNames.toArray(new String[0]); // 数组转ArrayList ArrayList<String> list = new ArrayList<>(Arrays.asList(array)); - 其他常用方法:
contains("李华"):检查元素是否存在remove(1):删除索引1的元素set(0, "赵强"):替换索引0的元素