请按照下列要求编写程序。 (1)编写一个 Student类,包含name 和age属性,提是供有参构造方法。 (2)在Student类中,重写toString()方法,输出age和 name 的值。 (3)在Student类中,重写hashCode()和equals()方法。 ·hashCode()的返回值是name的哈希值与age的的和。 ·equals(()判断对象的name和age是否相同,相同同则返回 true,不同则返回false。 (4)编写一个测试类,创建一个HashSet<Stu dent>对象hs,向hs中添加多个 Student对象,假设有两个Student对象相等。输出HashSet集合,观察Student对象是否添加成功。
时间: 2024-03-03 09:50:09 浏览: 50
Python中类和对象的属性 & 方法
以下是符合要求的 Java 代码:
Student 类:
```java
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 (obj instanceof Student) {
Student other = (Student) obj;
return this.name.equals(other.name) && this.age == other.age;
}
return false;
}
}
```
测试类:
```java
import java.util.HashSet;
public class Test {
public static void main(String[] args) {
HashSet<Student> hs = new HashSet<>();
Student s1 = new Student("Alice", 20);
Student s2 = new Student("Bob", 21);
Student s3 = new Student("Alice", 20);
hs.add(s1);
hs.add(s2);
hs.add(s3);
System.out.println(hs);
}
}
```
输出结果:
```
[Name: Bob, Age: 21, Name: Alice, Age: 20]
```
可以看到,HashSet 集合成功添加了两个相等的 Student 对象。
阅读全文