package test818;
import java.util.Set;
import java.util.TreeSet;class Test01 {    public static void main(String[] args) {
        Set<Student> set = new TreeSet<Student>();     // Java 7的钻石语法(构造器后面的尖括号中不需要写类型)
        set.add(new Student("Hao LUO", 33));
        set.add(new Student("XJ WANG", 32));
        set.add(new Student("Bruce LEE", 60));
        set.add(new Student("Bob YANG", 22));        for(Student stu : set) {
            System.out.println(stu);
        }    }
}package test818;public class Student implements Comparable<Student> {
    private String name;        // 姓名
    private int age;            // 年龄    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }    @Override
   public int compareTo(Student o) {
       return this.age.compareTo(o.age); // 比较年龄(年龄的升序)
    // 错误原因:Cannot invoke compareTo(int) on the primitive type int
    }}

解决方案 »

  1.   

      @Override
       public int compareTo(Student o) {
           return this.age - o.age; // 比较年龄(年龄的升序)
       }
      

  2.   

    compareTo不能比较int类型,把age改成Integer类型
      

  3.   

    我转成string可以了,虽然比较失去意义,但是编译通过了。compareTo可以比较integer类型么?
      

  4.   

    我不清楚你到底要怎么比,不过看你调用compareTo估计是按照字符串的方式去比    String.valueOf(this.age).compareTo( String.valueOf(o.age))
        //或者
        (this.age+"").compareTo(o.age+"")