TreeSet集合存储自定义对象并遍历:如果对象的成员变量值相同即为同一个对象,按照年龄进行从大到小进行排序。用内部类方法实现。java完整程序。
时间: 2025-06-09 08:00:20 浏览: 12
在Java中,如果你想要使用TreeSet存储自定义对象,并基于某个特定字段(如年龄)进行降序排序,你可以创建一个实现了Comparable接口的自定义类,然后在TreeSet内部使用一个自定义的比较器。以下是完整的示例:
首先,假设我们有一个名为Person的类,它有两个字段:name和age:
```java
public 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); // 按照年龄降序排序
}
// 自定义equals()方法判断两个Person是否相等
@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 && Objects.equals(name, person.name);
}
// 添加hashCode方法覆盖equals,确保equals满足hashcode一致性
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
接下来,我们可以创建一个TreeSet实例,并使用上面的Person类:
```java
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Person> treeSet = new TreeSet<>((p1, p2) -> p2.compareTo(p1)); // 使用自定义比较器
// 插入元素(如果有多个同名不同龄的人会被视为同一个)
treeSet.add(new Person("Alice", 30));
treeSet.add(new Person("Bob", 35));
treeSet.add(new Person("Charlie", 30));
System.out.println("Sorted People:");
for (Person person : treeSet) {
System.out.println(person.getName() + " - " + person.getAge());
}
//
阅读全文
相关推荐

















