Java编程题: 编写一个Student类,包含name和age属性,提供有参构造方法?

(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,观察是否添加成功。

//*********************Student
import java.util.Objects;

public class Student {
public String name;
public int age;
Student(){}
Student(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){//重写toString()
return "name: "+name+" age: "+age;
}
public boolean equals(Object o) {//重写equals()
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
public int hashCode() {//重写hashCode()
return Objects.hash(name)+age;
}
}

//********************StudentTest
import java.util.HashSet;

public class StudentTest {
public static void main(String[] args) {
HashSet<Student> hs=new HashSet<>();
Student s1=new Student("zs",19);//s1
Student s2=new Student("zs",19);//s2
Student s3=new Student("ls",19);//s3
hs.add(s1);//加入集合
hs.add(s2);//
hs.add(s3);//
//s1,s2,equals()返回true,s2不会加入集合
for(Student it:hs) {//遍历HasSet
System.out.println(it);
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-17
/调用 public void AddStudent() { List<Student> list = new List<Student>(); for(int i = 0; i < 10; i++) { list.Add(new Student(i.ToString(), "名称" + i.ToString(), i)); } Console...
第2个回答  2021-11-17
采纳率: 0% 浏览 5.1k java写一个Person类,包含name、age、sex属性,再写一个Student类继承Person类,增加School属性,并实例化。(用构造方法实现,... 这个地方啊我要声明一下,写了有参构造之后一定要加上无参构造 具体可以从网上搜
第3个回答  2021-11-17
class Undergraduate extends Student{ String degree; public Undergraduate(String name,String age,String degree){ super.name=name; super.age=age; this.加他qq
第4个回答  2021-11-17
-采纳率: 0% 浏览 5.1k java写一个Person类,包含name、age、sex属性,再写一个Student类继承Person类,增加School属性,并实例化。(用构造方法实现,... 这个地方啊我要声明一下,写了有参构造之后一定要加上无参构造 具体可以从网上搜 也...