创建一个Student类,有成员变量name和分数(Double类型)。如果两个学生对象的姓名和分数一样视为同一个学生, 先按姓名的降序排,如果姓名相同,则按分数的升序排; 提示:--分数属性使用Double,可使用compareTo方法
时间: 2024-05-09 17:16:41 浏览: 122
下面是一个示例代码:
```java
public class Student implements Comparable<Student> {
private String name;
private Double score;
public Student(String name, Double score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public Double getScore() {
return score;
}
@Override
public int compareTo(Student student) {
// 先按姓名的降序排
int compareName = student.getName().compareTo(this.name);
if (compareName != 0) {
return compareName;
} else {
// 如果姓名相同,则按分数的升序排
return this.score.compareTo(student.getScore());
}
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Student)) {
return false;
}
Student student = (Student) obj;
return this.name.equals(student.getName()) && this.score.equals(student.getScore());
}
@Override
public int hashCode() {
return this.name.hashCode() + this.score.hashCode();
}
}
```
在这个示例中,我们定义了一个叫做`Student`的类,它包含了学生的姓名和分数两个成员变量。我们还实现了`Comparable`接口,覆盖了`compareTo`方法,以便我们能够对学生进行排序。此外,我们还实现了`equals`和`hashCode`方法,以确保两个学生对象的姓名和分数相同时被视为同一个学生。
接下来,我们可以使用`Collections.sort`方法对学生对象进行排序,代码如下:
```java
List<Student> students = new ArrayList<>();
students.add(new Student("张三", 90.0));
students.add(new Student("李四", 80.0));
students.add(new Student("王五", 90.0));
students.add(new Student("赵六", 85.0));
Collections.sort(students);
for (Student student : students) {
System.out.println(student.getName() + " " + student.getScore());
}
```
在这个示例中,我们创建了一个`List`对象,包含了四个学生对象,并对它们进行排序。最后,我们使用`for`循环输出了排好序的学生信息。
阅读全文