TreeSet的无参构造,要求对象所属的类实现Comparable接口。
public int compareTo( Studetn s )
{
//需求是比较年龄
int num = this.age - s.age ;
//由于对象有多个成员变量,你不能根据其中的某一个决定其他的。
//当某一个形同的时候,你还需要判断其他的是不是也是相同的。
int num2 = ( num == 0 ) ? ( this.name.compareTo( s.name ) ) : num ;
return num2;
}
B:比较器排序(集合具备比较性)
TreeSet的带参构造,要求构造方法接收一个实现了Comparator接口的对象。
TreeSet<Student> ts = new TreeSet<Student> ( new Comparator<Student>
{
@Override
public int compare ( Student s1 , Student s2)
{
//按照年龄排序,从小到大
int num = s1.getAge() - s2.getAge();
//次要条件
int num2 = ( num == 0 ) ? ( s1.getName().compareTo(s2.getName()) ) : num;
return num2;
}
} );
//创建元素对象
Student s1 = new Student(“张三”,24);
Student s2 = new Student(“李四”,30);
Student s1 = new 。。。。。。
//添加元素
ts.add(s1);
ts.add(s2);
...........
for( Student s : ts )
{
System.out.println(s.getName() + "*****" + s.getAge());
}