当前位置:首页 > 行业动态 > 正文

Collection存储学生对象并遍历

通过创建包含姓名、年龄属性的学生类,利用Java集合框架的ArrayList存储多个学生对象,使用迭代器或增强for循环遍历集合元素,可输出每位学生的详细信息,实现步骤包括定义类、实例化对象、存入集合及遍历操作。

在Java编程中,通过Collection框架存储对象并进行遍历是常见需求,本文以存储学生对象为例,分步骤详细说明如何实现这一目标,并提供多种遍历方式,确保代码的规范性与实用性。


定义学生对象类

首先需要定义一个Student类,包含学生的基础属性,并通过构造方法和getter/setter实现封装。

Collection存储学生对象并遍历

public class Student {
    private int id;
    private String name;
    private int age;
    // 构造方法
    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    // getter和setter方法
    public int getId() { return id; }
    public String getName() { return name; }
    public int getAge() { return age; }
    // 可选:重写toString()便于输出信息
    @Override
    public String toString() {
        return "学生ID:" + id + ",姓名:" + name + ",年龄:" + age;
    }
}

存储学生对象

选择List接口的实现类(如ArrayListLinkedList)存储学生对象,以下示例使用ArrayList

import java.util.ArrayList;
import java.util.List;
public class Main {
    public static void main(String[] args) {
        // 创建List集合存储学生对象
        List<Student> studentList = new ArrayList<>();
        // 添加学生对象到集合
        studentList.add(new Student(101, "张三", 20));
        studentList.add(new Student(102, "李四", 22));
        studentList.add(new Student(103, "王五", 21));
    }
}

遍历学生对象的4种方法

增强for循环(推荐)

简洁直观,适用于大多数场景:

Collection存储学生对象并遍历

for (Student student : studentList) {
    System.out.println("ID:" + student.getId() + 
                      ",姓名:" + student.getName() + 
                      ",年龄:" + student.getAge());
}

迭代器(Iterator)

适用于需要边遍历边删除元素的场景:

Iterator<Student> iterator = studentList.iterator();
while (iterator.hasNext()) {
    Student student = iterator.next();
    System.out.println(student); // 直接调用toString()
}

Lambda表达式(Java 8+)

代码最简练:

studentList.forEach(student -> System.out.println(student));

普通for循环

适合需要索引的场景:

Collection存储学生对象并遍历

for (int i = 0; i < studentList.size(); i++) {
    Student student = studentList.get(i);
    System.out.println("索引" + i + ":" + student);
}

注意事项

  1. 元素顺序
    ArrayList按添加顺序存储,LinkedList更适合频繁增删的场景。
  2. 性能对比
    • 随机访问:ArrayList(时间复杂度O(1))优于LinkedList(O(n))
    • 增删元素:LinkedList(O(1))优于ArrayList(O(n))
  3. 对象唯一性
    若需避免重复学生,可改用Set集合(如HashSet),并重写equals()hashCode()方法。

完整代码示例

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
    public static void main(String[] args) {
        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student(101, "张三", 20));
        studentList.add(new Student(102, "李四", 22));
        studentList.add(new Student(103, "王五", 21));
        // 方法1:增强for循环
        System.out.println("==== 增强for循环 ====");
        for (Student student : studentList) {
            System.out.println(student);
        }
        // 方法2:迭代器
        System.out.println("n==== 迭代器 ====");
        Iterator<Student> iterator = studentList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        // 方法3:Lambda表达式
        System.out.println("n==== Lambda表达式 ====");
        studentList.forEach(System.out::println);
    }
}

引用说明

  • List接口文档:Oracle Java Docs
  • ArrayList实现原理:Java Platform SE 8