TreeSet集合存储自定义对象并遍历:如果对象的成员变量值相同,即为同一个对象,按照年龄进行从大到小进行排序。用自然排序方法实现。java完整程序
时间: 2025-06-09 16:00:19 浏览: 10
在Java中,如果你想要使用TreeSet存储自定义对象,并基于对象的某个属性(如年龄)进行自定义排序,你需要创建一个实现了Comparable接口的类,然后在TreeSet中指定这个比较器。这里是一个简单的示例:
首先,假设我们有一个名为Person的类,它有两个字段:name和age:
```java
import java.util.Comparator;
import java.util.TreeSet;
class Person implements Comparable<Person> {
private String name;
private int age;
// 构造函数、getter和setter
@Override
public int compareTo(Person other) {
return Integer.compare(this.age, other.age); // 按照年龄从大到小排序
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
}
```
这里我们在`compareTo()`方法中实现了自定义的年龄比较,并在`equals()`方法中处理了对象相等的情况。
接下来,你可以创建一个TreeSet实例,并添加Person对象:
```java
public class Main {
public static void main(String[] args) {
TreeSet<Person> treeSet = new TreeSet<>();
// 添加Person对象,例如
treeSet.add(new Person("Alice", 30));
treeSet.add(new Person("Bob", 35));
treeSet.add(new Person("Alice", 40)); // 同名不同年龄的对象会被自动忽略
for (Person person : treeSet) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
}
```
当遍历树集时,会按照年龄从大到小的顺序显示Person对象,如果有同名但年龄不同的对象,只会保留一个。
阅读全文
相关推荐

















