写一段代码证明 TreeSet构造函数什么都不传,但是Person类要实现Comparable接口
时间: 2024-05-05 08:21:32 浏览: 79
假设我们有一个Person类,其中包含id、name和age三个属性,我们需要根据id进行比较排序,那么我们需要实现Comparable接口,并且重写compareTo方法。代码演示如下:
```
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<>();
set.add(new Person(1, "Tom", 20));
set.add(new Person(2, "Jack", 22));
set.add(new Person(3, "Lucy", 21));
for (Person p : set) {
System.out.println(p);
}
}
}
class Person implements Comparable<Person> {
private int id;
private String name;
private int age;
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) {
return this.id - o.id;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
在上面的代码中,我们创建了一个TreeSet对象,该对象的元素类型为Person。由于我们没有传递任何参数给TreeSet构造函数,因此TreeSet将会使用Person类的compareTo方法进行元素的比较和排序。因此,我们需要在Person类中实现Comparable接口,并重写compareTo方法,以便TreeSet可以正确地对元素进行排序。最后,我们往TreeSet中添加了3个Person对象,并使用for循环遍历输出了每个元素。输出结果如下:
```
Person{id=1, name='Tom', age=20}
Person{id=2, name='Jack', age=22}
Person{id=3, name='Lucy', age=21}
```
可以看到,TreeSet已经按照Person对象的id属性进行了升序排序。
阅读全文