在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)); } }
简洁直观,适用于大多数场景:
for (Student student : studentList) { System.out.println("ID:" + student.getId() + ",姓名:" + student.getName() + ",年龄:" + student.getAge()); }
适用于需要边遍历边删除元素的场景:
Iterator<Student> iterator = studentList.iterator(); while (iterator.hasNext()) { Student student = iterator.next(); System.out.println(student); // 直接调用toString() }
代码最简练:
studentList.forEach(student -> System.out.println(student));
适合需要索引的场景:
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