TreeSet 集合 为什么我的重写接口Comparable的方法compareTo 传的参数是Object 不能改变?无法实现想要的目的
问题描述:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
TreeSet<Student> treeSet = new TreeSet<>();
Student s1 = new Student(18, "xishi");
Student s2 = new Student(20, "wangzhaojun");
Student s3 = new Student(22, "diaocan");
Student s4 = new Student(23, "yanyuhuan");
treeSet.add(s1);
treeSet.add(s2);
treeSet.add(s3);
treeSet.add(s4);
for (Student s : treeSet) {
System.out.println(s.getName() + ":" + s.getAge());
}
}
}
//学生类
public class Student implements Comparable{
public int age;
public String name;
//........
@Override
public int compareTo(Object o) {
return 0;
}
}
目的 是对学生对象遍历,
要求:按照年龄从大到小排序,年龄相同时按照姓名的字母进行排序
如图,我把compareTo 的参数该为Student时会报错
那这样如何实现我要的目的呢?我看到视频,为什么他的可以改,他默认的参数就是Student
答
使用泛型的形式,就不是object了
class Entity implements Comparable<Entity>{
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int compareTo(Entity o) {
return 0;
}
}