编写一个程序,实现下列要求: (1)创建一个Student类实现Comparable接口,包含以下属性(int)id,(String)name,(int)age,(String)sex。 (2)只提供了有参构造函数Student(int id, String name, int age, String sex)。 (3)重写toString()方法,输出学生的所有信息。 编写一个测试类Demo: (1)在测试类Demo中,创建三个学生,属性分别为 id=1 name=tom age=20 sex=男 id=3 name=fox age=19 sex=男 id=2 name=james age=21 sex=男 (2)创建一个TreeMap<Student,String>集合,令key值为学生对象,value值为学生的姓名,要求得到所有key值,并根据学生的age进行从大到小的排序输出学生信息。
时间: 2023-06-27 17:05:32 浏览: 81
Student类的代码实现如下:
```java
import java.util.Objects;
public class Student implements Comparable<Student> {
private int id;
private String name;
private int age;
private String sex;
public Student(int id, String name, int age, String sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
@Override
public int compareTo(Student o) {
return Integer.compare(this.age, o.age);
}
// 重写 equals 和 hashCode 方法,用于比较两个 Student 对象是否相等
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
age == student.age &&
Objects.equals(name, student.name) &&
Objects.equals(sex, student.sex);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age, sex);
}
}
```
Demo类的代码实现如下:
```java
import java.util.TreeMap;
public class Demo {
public static void main(String[] args) {
Student student1 = new Student(1, "tom", 20, "男");
Student student2 = new Student(3, "fox", 19, "男");
Student student3 = new Student(2, "james", 21, "男");
TreeMap<Student, String> map = new TreeMap<>();
map.put(student1, student1.getName());
map.put(student2, student2.getName());
map.put(student3, student3.getName());
for (Student s : map.keySet()) {
System.out.println(s.toString());
}
}
}
```
输出结果为:
```text
Student{id=3, name='fox', age=19, sex='男'}
Student{id=1, name='tom', age=20, sex='男'}
Student{id=2, name='james', age=21, sex='男'}
```
可以看到,学生信息根据年龄从大到小排序输出了。