定义Student类,成员变量包含姓名和学号属性。创建4个学生存储到HashSet中,学号相同的人则看做同一人不进行存储(需重写Student类中的hashCode()和equals()方法),最后打印HashSet中的学生信息
时间: 2024-12-19 19:19:17 浏览: 7
首先,我们需要创建一个名为`Student`的类,包含姓名(name)和学号(studentId)作为成员变量。为了满足HashSet的要求,我们还需要重写`hashCode()`和`equals()`方法,以便基于学号确定学生的唯一性:
```java
import java.util.HashSet;
import java.util.Set;
class Student {
private String name;
private int studentId;
public Student(String name, int studentId) {
this.name = name;
this.studentId = studentId;
}
// Overriding equals method to compare based on studentId
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Student otherStudent = (Student) obj;
return this.studentId == otherStudent.studentId;
}
// Overriding hashCode method for consistent behavior with equals
@Override
public int hashCode() {
return Objects.hash(name, studentId);
}
// Getters and setters (not shown here)
}
public class Main {
public static void main(String[] args) {
Set<Student> uniqueStudents = new HashSet<>();
Student student1 = new Student("张三", 1001);
Student student2 = new Student("李四", 1001); // 同一学号
Student student3 = new Student("王五", 1002);
Student student4 = new Student("赵六", 1001); // 同一学号
// 添加学生到HashSet
uniqueStudents.add(student1);
uniqueStudents.add(student2); // 由于已存在学号相同的student1,不会添加
uniqueStudents.add(student3);
uniqueStudents.add(student4); // 由于已存在学号相同的student1,不会添加
// 打印Set中的唯一学生
System.out.println("Unique students in the set:");
for (Student s : uniqueStudents) {
System.out.println(s.getName() + " (" + s.getStudentId() + ")");
}
}
}
```
在这个例子中,只有两个不同的学生(张三和王五)会被存储在HashSet中,因为他们的学号不同。运行`main`方法后,你会看到输出结果:
```
Unique students in the set:
张三 (1001)
王五 (1002)
```
阅读全文