* 其中的元素按照自然顺序进行排序的
* 注意:在此类集合中,只能存放同一类型的元素
* 如果集合中的元素为自定义类型的对象,有以下两种方式可以自己设置排序方式:
* 1.自定义的类必须实现java.lang.Comparable接口,并且实现其中的抽象方法
* 2.根据自定义类写一个比较器的类,该比较器必须实现java.util.Comparator接口,并且实现接口的抽象方法,在创建TreeSet对象时,将比较器对象传入。
第一种:
实现Comparable接口,实现compareTo(Object o) 方法
@Override
public int compareTo(Object o) {
if(o instanceof Person){
Person p=(Person) o;
if(this.age<p.age){
return -1;
}else if(this.age>p.age){
return 1;
}else{
return 0;
}
}
return 0;
}
实现的抽象方法compareTo在TreeSet集合放入类对象时被调用,并且是放入的类对象跟集合前面的类对象比较。即this指当前类对象,Object o指前面的那些对象。所以此处是正序排列,当前对象的属性值大时返回为正数。
第二种:
写一个比较器的类实现java.util.Comparator接口,实现compare(Object o1, Object o2) 方法
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Student && o2 instanceof Student){
Student s1=(Student)o1;
Student s2=(Student)o2;
int id = s1.getStuId()-s2.getStuId();
//当前对象减参数对象返回值,是从小到大
return id;
}
return 0;
}
*o1相等于java.lang.comparable接口中的conparaTo()方法的当前对象
*o2相等于 java.lang.comparable接口中的conparaTo()方法的参数对象
此比较器排序为正序