3-5 问题

3-5 问题

//实现Comparator接口
public class StudentTest implements Comparator<Student>{
    
    //实现接口中的方法
    public int compareTo(Student a,Student b){
        String mz1=a.getName();
        String mz2=b.getName();
        int count=mz1.compareTo(mz2);
        return count;
    }
    
    public static void main(String[] args){
        //定义Student类的对象
        Student a=new Student(40,20,"peter");
        Student b=new Student(28,5,"angel");
        Student c=new Student(35,18,"tom");
        
        //将对象添加到List中
        List<Student> stu=new ArrayList<Student>();
        stu.add(a);
        stu.add(b);
        stu.add(c);
        
        
        //输出排序前的数据
        System.out.println("输出排序前的数据");
        for(Student i:stu){
            System.out.println(i.toString());
        }
        
        //排序
        Collections.sort(stu,new TestStudent());
        
        //输出排序后的数据
        System.out.println("输出排序后的数据");
        for(Student i:stu){
            System.out.println(i.toString());
        }
        
    }
    
}
public class Student {
    //成员变量
    private int no;
    private int age;
    private String name;
    
    
    //构造方法
    public Student(){
        
    }
    
    public Student(int no,int age,String name){
        setNo(no);
        setAge(age);
        setName(name);
    }
    
    //getter和setter方法
    public void setNo(int no){
        this.no=no;
    }
    
    public int getNo(){
        return no;
    }
    
    public void setAge(int age){
        this.age=age;
    }
    
    public int getAge(){
        return age;
    }
    
    public void setName(String name){
        this.name=name;
    }
    
    public String getName(){
        return name;
    }
    
    //toString()方法
    public String toString(){
        String str="学号:"+getNo()+"  年龄:"+getAge()+"  姓名:"+getName();
        return str;
    }
}

问题描述:

尝试了很多次一直运行失败。请老师帮我看一下是哪里的问题,谢谢。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2022-03-30 10:29:28

同学你好, 代码中存在的问题如下:

1、Comparator接口中的抽象方法为compare,故实现类中需重写compare方法。

https://img1.sycdn.imooc.com//climg/6243c01909a9d27803610112.jpg

2、创建对象时的类名书写有误,需将TestSuden修改为StudentTest。

https://img1.sycdn.imooc.com//climg/6243c0840945d80e05970586.jpg

祝学习愉快~

  • 为什么要重写compareto




    2022-04-10 22:39:16
  • 同学你好,实现Comparator后需重写compare方法,无需重写compareTo方法。

    https://img1.sycdn.imooc.com//climg/62538881095be7cf05950210.jpg

    祝学习愉快~

    2022-04-11 09:46:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师