消息关闭
    暂无新消息!
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
    }

}

3个回答

︿ 0
我不清楚你到底要怎么比,不过看你调用compareTo估计是按照字符串的方式去比

    String.valueOf(this.age).compareTo( String.valueOf(o.age))
    //或者
    (this.age+"").compareTo(o.age+"")
︿ 0
  @Override
   public int compareTo(Student o) {
       return this.age - o.age; // 比较年龄(年龄的升序)
   }