_栖凤_ 2021-07-24 22:39 采纳率: 100%
浏览 37
已结题

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;
    }
}

img

目的 是对学生对象遍历,
要求:按照年龄从大到小排序,年龄相同时按照姓名的字母进行排序
如图,我把compareTo 的参数该为Student时会报错
那这样如何实现我要的目的呢?我看到视频,为什么他的可以改,他默认的参数就是Student

  • 写回答

1条回答 默认 最新

  • 曦陽惜夏 2021-07-25 10:55
    关注

    使用泛型的形式,就不是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;
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月29日
  • 已采纳回答 7月25日
  • 创建了问题 7月24日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制