为什么老是抛出异常 ,那儿错了么???
import java.util.*;
import java.util.Collection;
import java.util.TreeSet;public class as implements Comparable{
public static void main(String[] agrs){

Collection<Student> treeset = new TreeSet<Student>();
    Student s1=new Student(12345,"John","Smith");
Student s2=new Student(23456,"Jane","Smith");
Student s3=new Student(34567,"Adam","Smith");
Student s4=new Student(45678,"Tom","Jones");
treeset.add(s1);
treeset.add(s2);
treeset.add(s3);
treeset.add(s4);
for(Student student:treeset){
System.out.println(student.getFullname());
}
}

//实现Comparable接口的方法
public int compareTo(Object o){
assert((o instanceof Student)&&(o!=null));
Student s=(Student)o;
int relativeValue=s.LastName.compareTo(s.getLastName());
if(relativeValue==0){
relativeValue=s.FirstName.compareTo(s.getFirstName());
}
return relativeValue;

}}
//student类public class Student {
private long ID;
String FirstName;
    String LastName;
    public Student(long id,String fn,String ln){
     ID=id;
     FirstName=fn;
     LastName=ln;
     }
    public String getFirstName(){
     return FirstName;
    }
    public String getLastName(){
     return LastName;
    }
    public String getFullname(){
     return FirstName+" "+LastName;
    }
}

解决方案 »

  1.   

    要实现Comparable接口的是类Student, 而不是as, 修改了一下:import java.util.*;
    import java.util.Collection;
    import java.util.TreeSet;public class as {    public static void main(String[] agrs) {        Collection<Student> treeset = new TreeSet<Student>();
            Student s1 = new Student(12345, "John", "Smith");
            Student s2 = new Student(23456, "Jane", "Smith");
            Student s3 = new Student(34567, "Adam", "Smith");
            Student s4 = new Student(45678, "Tom", "Jones");
            treeset.add(s1);
            treeset.add(s2);
            treeset.add(s3);
            treeset.add(s4);
            for (Student student : treeset) {
                System.out.println(student.getFullname());
            }
        }}// student类class Student implements Comparable {
        private long ID;
        String       FirstName;
        String       LastName;    public Student(long id, String fn, String ln) {
            ID = id;
            FirstName = fn;
            LastName = ln;
        }    public String getFirstName() {
            return FirstName;
        }    public String getLastName() {
            return LastName;
        }    public String getFullname() {
            return FirstName + " " + LastName;
        }    // 实现Comparable接口的方法
        public int compareTo(Object o) {
            assert ((o instanceof Student) && (o != null));        Student s = (Student) o;
            int relativeValue = this.LastName.compareTo(s.getLastName());
            if (relativeValue == 0) {
                relativeValue = this.FirstName.compareTo(s.getFirstName());
            }        return relativeValue;
        }
    }