我们可以对Set集合中的元素进行排序。使用的是二叉树结构。如何保证元素唯一性的呢?使用的对象比较方法的结果是否为0,是0,视为相同元素不存。元素自身具备自然排序,其实就是实现了Comparable接口重写了compareTo方法。
有一个叫做Comparator的接口,并且TreeSet集合的接口允许我们给其传递这样一个接口的子类对象。其实就是在创建TreeSet集合时,在构造函数中指定具体的比较方式。需要定义一个类实现。只需要这个对象实现Comparable接口,并实现其中的compareTo
方法即可。
创建对象
public class practice implements Comparable {
private String name;
private int age;
public practice () {
}
public String getName () {
return name;
}
public void setName ( String name ) {
this.name = name;
}
public int getAge () {
return age;
}
public void setAge ( int age ) {
this.age = age;
}
public practice ( String name, int age ) {
this.name = name;
this.age = age;
}
@Override
public String toString () {
return "practice{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo ( Object o ) {
if (!(o instanceof practice)) {
throw new ClassCastException("o is not a practice");
}
practice p = (practice) o;
int res = age - p.age;
res = res != 0 ? res : name.compareTo(p.name);
return res;
}
}
进行储存
public static void main ( String[] args ) {
TreeSet set = new TreeSet();
practice s1=new practice("张三",22);
practice s2=new practice("王五",21);
practice s3=new practice("刘三",20);
practice s4=new practice("李四",24);
set.add(s1);
set.add(s2);
set.add(s3);
set.add(s4);
System.out.println(set);
}
输出结果
[practice{name='刘三', age=20},
practice{name='王五', age=21},
practice{name='张三', age=22},
practice{name='李四', age=24}]