TreeSet集合存储自定义对象并遍历:如果对象的成员变量值相同即为同一个对象,按照年龄进行从大到小进行排序。然后用内部类方法实现。java完整程序。
时间: 2025-06-09 13:00:20 浏览: 10
在Java中,你可以使用`TreeSet`集合来存储自定义对象,因为它自然地支持无序的唯一元素,并且可以提供基于自定义比较器(比如年龄)的排序。首先,你需要创建一个类,例如`Person`,其中包含姓名、年龄等属性,并实现`Comparable`接口以便于排序。以下是完整的示例:
```java
import java.util.Set;
import java.util.TreeSet;
class Person implements Comparable<Person> {
private String name;
private int age;
// 构造函数、getters 和 setters 省略...
@Override
public int compareTo(Person other) {
return Integer.compare(this.age, other.age); // 按照年龄降序排序
}
// 如果两个Person对象的age相同,则根据name进行区分,这里省略equals()方法
}
public class Main {
public static void main(String[] args) {
// 创建一个自定义的Comparator
Comparator<Person> personComparator = new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
if (p1.getAge() == p2.getAge()) {
return p1.getName().compareTo(p2.getName());
} else {
return Integer.compare(p1.getAge(), p2.getAge()); // 主要是按年龄排序
}
}
};
// 使用TreeSet并指定自定义Comparator
TreeSet<Person> treeSet = new TreeSet<>(personComparator);
// 添加元素(假设有一个Person列表)
List<Person> peopleList = ...; // 填充数据
for (Person person : peopleList) {
treeSet.add(person);
}
// 遍历树集并打印年龄最大的人先
for (Person person : treeSet) {
System.out.println("Name: " + person.getName() + ", Age: " + person.getAge());
}
//
阅读全文
相关推荐

















