Java中使用ArrayList存储自定义对象需定义含字段、构造器和getter/setter的类(如Student),声明泛型ArrayList<Student>避免类型不安全,重写toString()便于调试,并注意集合特性及equals/hashCode重写要求。

Java 中使用 ArrayList 存储自定义对象非常常见,关键在于确保自定义类结构清晰、具备合理构造方法和必要字段,并正确声明泛型类型。
定义自定义类(如 Student)
先创建一个普通 Java 类,包含属性、构造方法、getter/setter(IDE 通常可自动生成):
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// getter 和 setter 方法(略)
public String getName() { return name; }
public int getAge() { return age; }
}
声明并初始化带泛型的 ArrayList
必须用尖括号指定具体类型(如 ArrayList<Student>),避免原始类型(如 ArrayList)导致类型不安全:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
推荐写法(泛型明确):
ArrayList<Student> students = new ArrayList<>(); - 添加对象:
students.add(new Student("张三", 20)); - 遍历示例:
for (Student s : students) { System.out.println(s.getName()); }
注意 toString() 方法便于调试输出
默认打印对象会显示内存地址(如 Student@1b6d3586)。建议重写 toString() 方法,让 System.out.println(student) 输出可读内容:
立即学习“Java免费学习笔记(深入)”;
@Override
public String toString() {
return "Student{name='" + name + "', age=" + age + "}";
}
常见问题提醒
- 如果忘记写泛型(如
ArrayList students = new ArrayList();),编译虽通过,但后续取元素需手动强转,易出 ClassCastException - 自定义类若用于 HashMap 或 HashSet,记得重写 hashCode() 和 equals()(尤其当需要判断对象是否相等时)
- ArrayList 允许重复和 null 值,这点与 Set 不同

















