用Java写 一、按要求设计程序(1) 编写一个Student类,包含name和age属性,并完成封装(2) 提供Student类的无参、有参构造方法。(3) 在Student类中,重写toString()方法,输出age和name的值。(4) 在Student类中,重写hashCode()和equals()方法A、 hashCode()的返回值是name的hash值与age的和。B、 equals()判断对象的name和age是否相同,相同则返回true不同返回false。(5) 最后编写一个测试类TestStudent,创建一个HashSet对象hs,向hs中添加如下5个Student实例对象,输出HashSet,观察是否添加成功。 ( 6 ) 编写比较器ComparatorByAge实现学生按年龄进行比较大小( 7 ) 在测试类中创建ArrayList集合对象al,将上面hs集合中的Student对象存入其中( 8 ) 在测试类中完成对al集合中的Student对象进行按年龄升序排序( 9 ) 在测试类中遍历(迭代)输出al集合中的学生对
时间: 2024-02-24 13:58:53 浏览: 127
答案如下:
1. Student类的代码如下:
```java
public class Student {
private String name;
private int age;
public Student() {}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
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 student = (Student) obj;
return name.equals(student.getName()) && age == student.getAge();
}
return false;
}
}
```
2. TestStudent类的代码如下:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
public class TestStudent {
public static void main(String[] args) {
// 创建HashSet集合对象
HashSet<Student> hs = new HashSet<Student>();
// 向hs集合中添加5个Student实例对象
hs.add(new Student("Alice", 20));
hs.add(new Student("Bob", 19));
hs.add(new Student("Charlie", 21));
hs.add(new Student("David", 18));
hs.add(new Student("Eva", 22));
// 输出HashSet集合
System.out.println(hs);
// 创建ArrayList集合对象
List<Student> al = new ArrayList<Student>(hs);
// 完成对al集合中的Student对象进行按年龄升序排序
al.sort(new ComparatorByAge());
// 输出al集合中的学生对象
for (Student student : al) {
System.out.println(student);
}
}
}
// 定义比较器
class ComparatorByAge implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
if (o1.getAge() > o2.getAge()) {
return 1;
} else if (o1.getAge() < o2.getAge()) {
return -1;
} else {
return 0;
}
}
}
```
输出结果如下:
```java
[name: Bob, age: 19, name: Alice, age: 20, name: David, age: 18, name: Eva, age: 22, name: Charlie, age: 21]
name: David, age: 18
name: Bob, age: 19
name: Alice, age: 20
name: Charlie, age: 21
name: Eva, age: 22
```
阅读全文
相关推荐














