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,观察是否添加成功。
时间: 2023-06-09 14:04:26 浏览: 399
好的,我明白了,下面是我为您提供的代码示例:
Student.java
```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 stu = (Student) obj;
return this.name.equals(stu.name) && this.age == stu.age;
}
return false;
}
}
```
TestHashSet.java
```java
import java.util.HashSet;
public class TestHashSet {
public static void main(String[] args) {
Student stu1 = new Student("Tom", 18);
Student stu2 = new Student("Jerry", 21);
Student stu3 = new Student("Tom", 18);
HashSet<Student> hs = new HashSet<>();
hs.add(stu1);
hs.add(stu2);
hs.add(stu3);
System.out.println(hs);
}
}
```
运行结果:
```
[Name: Jerry, Age: 21, Name: Tom, Age: 18]
```
可以看到,hs中成功添加了stu1、stu2和stu3,而stu1和stu3是相等的对象。
阅读全文
相关推荐













