想知道这两个的具体意思
import java.util.Arrays;
class Animail
{
public static void main(String[] args)
{
Student [] ss=new Student[]{new Student(18,"lisi"),
new Student(15,"lisan"),
new Student(17,"lihai") };
Arrays.sort(ss);
for(int i=0;i<ss.length;i++){
System.out.println("num= "+ss[i].num+" name="+ss[i].name);
}
}
}
class Student implements Comparable
{
int num;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
public int compareTo(Object o){
Student s=(Student)o;
return num<s.num ? -1:(num>s.num ? 1:0);
}
}
return num<s.num ? -1:(num>s.num ? 1:0);这一句里我想知道它是怎么让15,17,18,按顺序排列的,还有num和s.num分别具体的内容的解释,谢谢,反正又明白又不明白的,因为我知道num小于s.num的是正确话,就返回冒号和问号之间的值。如果错误就返回冒号后面的值。这个num是指15,17,18,吗?s.num呢?
object
------解决方案--------------------这段代码实现的是对象排序的功能
是通过Arrays类的sort方法来进行的
不过对象要进行排序要实现Comparable接口
并且重写public int compareTo(Object o){}方法
因为对象大小的比较是由你的需求而定的
------解决方案--------------------首先说:
return num<s.num ? -1:(num>s.num ? 1:0);
这是三目运算符,意义就相当于:
if(num<s.num){
return -1;
}else{
if(if num > s.num){
return 1;
}else{
return 0;
}
}
然后再说排序的问题,实际上你定义的Student类本身并没有做排序计算,排序的算法本身是在Array的sort方法里完成的。Student类之所以要实现一个Compareable接口,定义compareTo方法,实际上是为了告诉Array类里面具体的sort算法,应该如何判断大和小,然后排序的工作,由Array里的sort算法具体完成。