1. 请按照下列要求编写程序。 (1) 编写一个Student类,包含name和age属性,提供有参构造方法。 (2) 在Student类中,重写toString()方法,输出age和name的值。 (3) 在Student类中,重写hashCode()和equals()方法 a.hashCode()的返回值是name的hash值与age的和。b.equals()判断对象的name和age是否相同,相同则返回true不同返回false。 (4)最后编写一个测试类,创建一个HashSet<Student>对象hs,向hs中添加多个Student对象,假设有两个Student对象相等,输出HashSet,观察是否添加成功。
时间: 2024-02-09 18:11:35 浏览: 98
编写程序,设计一个学生类Student和它的子类Undergraduate
5星 · 资源好评率100%
好的,以下是Java代码实现:
```java
import java.util.HashSet;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Name: " + name + ", Age: " + age;
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Student student = (Student) obj;
if (age != student.age) return false;
return name.equals(student.name);
}
public static void main(String[] args) {
HashSet<Student> hs = new HashSet<>();
Student s1 = new Student("Tom", 18);
Student s2 = new Student("Jerry", 19);
Student s3 = new Student("Tom", 18);
hs.add(s1);
hs.add(s2);
hs.add(s3);
System.out.println(hs);
}
}
```
在这个程序中,我们定义了一个名为Student的类,它有两个属性:name和age,以及一个有参构造方法。我们重写了toString()方法,以便打印出age和name的值。我们还重写了hashCode()和equals()方法,以使其能够正确地检查两个对象是否相等。
在测试类中,我们创建了一个HashSet<Student>对象hs,并向hs中添加了三个Student对象。其中,s1和s3的name和age相同,它们应该被视为相等的对象。最后,我们打印出hs的结果,以检查是否成功添加了这三个对象。
阅读全文