我们可以对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}]
这篇博客介绍了Java中TreeSet集合如何进行排序以及如何保证元素唯一性。通过实现Comparable接口并重写compareTo方法,使得对象具备自然排序能力。同时,TreeSet利用Comparator接口的子类对象在构造时指定特定的比较方式,确保元素不重复。示例代码展示了如何创建一个包含姓名和年龄的对象并进行排序存储,输出结果为排序后的姓名和年龄。
1871

被折叠的 条评论
为什么被折叠?



