日期:2014-05-20  浏览次数:20671 次

想知道这两个的具体意思
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算法具体完成。