ArrayList存储自定义对象与存储String、Integer无本质区别,但需合理定义类(含字段、构造方法、toString等);使用泛型指定类型;注意引用存储特性,修改对象属性会影响列表中对应元素。

ArrayList 存储自定义对象,核心是把对象当成普通元素添加进去,和存 String、Integer 没本质区别,但要注意对象类需有合理定义(比如字段、构造方法、toString 等),否则打印或使用时容易出问题。
1. 先定义好你的自定义类
确保类有明确的属性、公共构造方法,建议重写 toString(),方便调试时看清内容:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{name='" + name + "', age=" + age + "}";
}
}
2. 创建 ArrayList 并指定泛型类型
用 <Student> 明确告诉 ArrayList 只存 Student 对象,避免类型混淆和强转麻烦:
ArrayList<Student> list = new ArrayList<>();
3. 添加、获取、遍历对象都很直接
添加用 add(),获取用 get(),遍历时可直接用增强 for 或迭代器:
- 添加:list.add(new Student("张三", 18));
- 获取第 0 个:Student s = list.get(0);
- 遍历打印:
for (Student s : list) { System.out.println(s); }
4. 注意对象是引用存储,修改影响原对象
ArrayList 存的是对象的引用,不是副本。改 list 里的对象属性,原对象也会变:
Student s1 = new Student("李四", 20);
list.add(s1);
s1.setAge(21); // 这样改,list.get(0).getAge() 也会变成 21
如果不想联动,创建新对象或在添加前 clone(需实现 Cloneable)。


















