@Override public int compareTo(Person o) { //姓名为主要条件 int num = this.name.compareTo(o.name); //年龄为次要条件 int num2 = num == 0 ? this.age - o.age : num; return num2; }TreeSet<Person> ts = new TreeSet<>(); 举例说明如何判断的
时间: 2024-04-14 21:25:48 浏览: 154
假设有以下示例代码:
```java
class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) {
int num = this.name.compareTo(o.name);
int num2 = num == 0 ? this.age - o.age : num;
return num2;
}
}
public class Main {
public static void main(String[] args) {
TreeSet<Person> ts = new TreeSet<>();
ts.add(new Person("张三", 23));
ts.add(new Person("李四", 24));
ts.add(new Person("王五", 25));
for (Person p : ts) {
System.out.println(p.getName() + " - " + p.getAge());
}
}
}
```
在上述示例中,我们创建了一个Person类,实现了Comparable接口,并重写了compareTo方法。compareTo方法中,姓名被设定为主要条件,年龄为次要条件。
在main方法中,我们创建了一个TreeSet对象ts,并添加了三个Person对象,分别是"张三"(23岁)、"李四"(24岁)和"王五"(25岁)。
当我们遍历TreeSet并输出元素时,输出结果将按照compareTo方法的逻辑进行排序。根据姓名的字典顺序,"李四"排在"张三"之前,"王五"排在"李四"之后。
所以输出结果将是:
```
李四 - 24
张三 - 23
王五 - 25
```
这是根据compareTo方法的实现来进行排序的结果。
阅读全文