一、按要求设计程序 (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-18 16:04:02 浏览: 70
好的,我明白了。下面是代码实现:
Student.java
```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 "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Student)) {
return false;
}
Student s = (Student) obj;
return this.name.equals(s.getName()) && this.age == s.getAge();
}
}
```
ComparatorByAge.java
```java
import java.util.Comparator;
public class ComparatorByAge implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
}
}
```
TestStudent.java
```java
import java.util.*;
public class TestStudent {
public static void main(String[] args) {
// 创建HashSet集合对象
Set<Student> hs = new HashSet<>();
// 添加5个Student实例对象到HashSet
hs.add(new Student("Alice", 18));
hs.add(new Student("Bob", 20));
hs.add(new Student("Charlie", 22));
hs.add(new Student("David", 19));
hs.add(new Student("Eileen", 21));
System.out.println("HashSet: " + hs);
// 创建ArrayList集合对象
List<Student> al = new ArrayList<>();
// 将hs集合中的Student对象存入al中
al.addAll(hs);
// 对al集合中的Student对象进行按年龄升序排序
Collections.sort(al, new ComparatorByAge());
// 遍历输出al集合中的学生对象到控制台
System.out.println("按年龄升序排序后的ArrayList:");
for (Student s : al) {
System.out.println(s);
}
}
}
```
输出结果:
```
HashSet: [Student{name='Eileen', age=21}, Student{name='Charlie', age=22}, Student{name='Bob', age=20}, Student{name='David', age=19}, Student{name='Alice', age=18}]
按年龄升序排序后的ArrayList:
Student{name='Alice', age=18}
Student{name='David', age=19}
Student{name='Bob', age=20}
Student{name='Eileen', age=21}
Student{name='Charlie', age=22}
```
阅读全文