上一篇
Collection存储学生对象并遍历
- 行业动态
- 2025-04-14
- 8
通过创建包含姓名、年龄属性的学生类,利用Java集合框架的ArrayList存储多个学生对象,使用迭代器或增强for循环遍历集合元素,可输出每位学生的详细信息,实现步骤包括定义类、实例化对象、存入集合及遍历操作。
在Java编程中,通过Collection
框架存储对象并进行遍历是常见需求,本文以存储学生对象为例,分步骤详细说明如何实现这一目标,并提供多种遍历方式,确保代码的规范性与实用性。
定义学生对象类
首先需要定义一个Student
类,包含学生的基础属性,并通过构造方法和getter/setter
实现封装。
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
接口的实现类(如ArrayList
或LinkedList
)存储学生对象,以下示例使用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循环(推荐)
简洁直观,适用于大多数场景:
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循环
适合需要索引的场景:
for (int i = 0; i < studentList.size(); i++) { Student student = studentList.get(i); System.out.println("索引" + i + ":" + student); }
注意事项
- 元素顺序
ArrayList
按添加顺序存储,LinkedList
更适合频繁增删的场景。 - 性能对比
- 随机访问:
ArrayList
(时间复杂度O(1))优于LinkedList
(O(n)) - 增删元素:
LinkedList
(O(1))优于ArrayList
(O(n))
- 随机访问:
- 对象唯一性
若需避免重复学生,可改用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 DocsArrayList
实现原理:Java Platform SE 8