import java.util.*;
public class Main{
public class Person implements Comparable{
int id;
int age;
String name;
public Person(int id, int age, String name) {
super();
this.id = id;
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Preson [id=" + id + ", age=" + age + ", name=" + name + "]";
}
@Override
public int compareTo(Object o) {//o是要比较的对象
//compareTo方法返回值只有,-1、0、1;当this.id - p.id大于等于0的时候才输出。
Person p = (Person)o;
// return this.id - p.id;//id从小到大排序
return p.id - this.id;//id从大到小排序
}
}
public static void main(String[] args) {
Set set = new TreeSet();
/*在方法外创建的类Person,如果方法是static修饰的,
如static main(),而类没有用static修饰,
要在static main方法中获得实例Person对象,
则 需要先实例化一个外层的对象A,再通过A.new来获得Person对象*/
Main t=new Main();//创建一个外部实例
Person p1=t.new Person(1, 18, "小明");//通过外部实例t实例化Person
Person p2=t.new Person(4, 5, "小花");//通过外部实例t实例化Person
Person p3=t.new Person(3, 13, "小华");//通过外部实例t实例化Person
//在方法中创建类Person,视为方法内部类,可以在方法体内直接new Person() 获得该类实例。否则会报错
// Person p1 = new Preson1, 18, "小明");//
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p3);//重复的元素不会添加到集合中
// set.add(null);//TreeSet不能添加null值,会抛出空指针异常;
System.out.println(set.size());
Iterator it = set.iterator();//迭代器
while(it.hasNext()) {
//Person per = (Person)it.next();
//System.out.println(per.getId+" "+per.getAge+" "+p.getName());
System.out.println(it.next());
}
}
}
运行结果: