java的compareTo()函数

publicclassStudentimplementsComparable{intstudentId;Stringname;intage;publicStudent(i... public class Student implements Comparable{
int studentId;
String name;
int age;
public Student(int studentId,String name,int age){
this.studentId=studentId;
this.name=name;
this.age=age;
}
public int compareTo(Object obj){
Student p=(Student)obj;
if(age>p.age)
return -1;
if(age<p.age)
return 1;
return 0;
}
请问这个compareTo在测试类test类中怎么实现?
Student[]stu=new Student[3];
stu[0]=new Student(1,"黎明",34);
stu[1]=new Student(2,"周润发",50);
stu[2]=new Student(3,"周星星",40);
上面是test的部分代码,是Student类型的对象。
展开
 我来答
妥协沵旳倔强
2013-10-30 · 超过13用户采纳过TA的回答
知道答主
回答量:23
采纳率:0%
帮助的人:28.3万
展开全部

为Student类重写toString方法.


你已经实现了Comparable接口,所以需要排序的时候只需要调用 Arrays.sort(stu);即可实现根据年龄排序。

public int compareTo(Student obj) {
        if (age > obj.age)
            return -1;
        if (age < obj.age)
            return 1;
        return 0;
    }

..如需要了解toString方法请追问或查看Object类源代码

@Override
    public String toString() {
        return this.name + "&"脊丛 + this.age;
    }
import java.util.Arrays;

public class Student implements Comparable<Student> {
    int studentId;

    String name;

    int age;

    public Student(int studentId, String name, int 扒雀age) {
        this.studentId = studentId;
    春野早    this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return this.name + "&" + this.age;
    }

    public int compareTo(Student obj) {
        if (age > obj.age)
            return -1;
        if (age < obj.age)
            return 1;
        return 0;
    }

    public static void main(String[] args) {
        Student[] stu = new Student[3];
        stu[0] = new Student(1, "黎明", 34);
        stu[1] = new Student(2, "周润发", 50);
        stu[2] = new Student(3, "周星星", 40);
        Arrays.sort(stu);
        System.out.println(Arrays.toString(stu));
    }
}

得到结果..


如需要实现升序排序

只需要改一下

public int compareTo(Student obj) {
        if (age < obj.age)
            return -1;
        if (age > obj.age)
            return 1;
        return 0;
    }
更多追问追答
追问
为什么我写程序执行到Arrays.sort会出现异常
追答
Arrays.sort(stu);

该方法接收的是一个数组,它直接改变你传过去的数组对象,而不会将一个排序后的新的数组返回给你。直接输入null会编译错误,在运行过程中传入null也只会报空指针异常。应该不会出现别的问题。 除非你没有导入包  import java.util.Arrays;

幻之谁愚
2015-10-18 · TA获得超过4.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:77%
帮助的人:912万
展开全部
  compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,当需要对让裂竖某个类的对象进行排序时,该类需要实现Comparable<T>接口的,必须坦大重写public int compareTo(T o)方法。
  比如MapReduce中源猛Map函数和Reduce函数处理的 <key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0adf2dfc62
2013-10-30 · TA获得超过578个赞
知道小有建树答主
回答量:553
采纳率:50%
帮助的人:214万
展开全部
stu[0].compareTo(stu[1]);
更多追问追答
追问
我是想按照年龄大小顺序打印出来怎么办呢
追答

我用冒泡法排序给你写了一下 你看附件

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lin_chuhao
2013-10-30 · TA获得超过352个赞
知道小有建树答主
回答量:572
采纳率:57%
帮助的人:135万
展开全部
stu[0]=new Student(1,"黎明",34);
stu[0].compareTo(stu[0]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzgmusic
2013-10-30 · TA获得超过414个赞
知道小有建树答主
回答量:573
采纳率:66%
帮助的人:304万
展开全部
Collections.sort 方法
追问
我想用compareTo方法按照年龄大小打印
追答
你只要重写了, Collections.sort() 就会调用那个方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式