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类型的对象。 展开
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类型的对象。 展开
5个回答
展开全部
为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;
展开全部
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>接口的组合;
比如MapReduce中源猛Map函数和Reduce函数处理的 <key,value>,其中需要根据key对键值对进行排序,所以,key实现了WritableComparable<T>接口,实现这个接口可同时用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的组合;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stu[0].compareTo(stu[1]);
更多追问追答
追问
我是想按照年龄大小顺序打印出来怎么办呢
追答
我用冒泡法排序给你写了一下 你看附件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stu[0]=new Student(1,"黎明",34);
stu[0].compareTo(stu[0]);
stu[0].compareTo(stu[0]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Collections.sort 方法
追问
我想用compareTo方法按照年龄大小打印
追答
你只要重写了, Collections.sort() 就会调用那个方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询