需求:存储自定义对象并遍历Student(name,age),并按照姓名的长度排序 * TreeSet集合保证元素排序和唯一性的原理 * 唯一性:是根据比较的返回是否是0来决定。 * 排序: A:自然排序(元素具备比较性) 让元素所属的类实现自然排序接口 Comparable B:比较器排序(集合具备比较性) 让集合的构造方法接收一个比较器接口的子类对象 Comparator
时间: 2024-01-21 17:18:55 浏览: 89
首先,我们需要定义一个 Student 对象类,该类包含 name 和 age 两个属性,并且实现 Comparable 接口,以便在 TreeSet 中进行排序。
```java
public class Student implements Comparable<Student>{
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// 实现 compareTo 方法,按照姓名的长度排序
public int compareTo(Student o) {
int result = this.name.length() - o.name.length();
if(result == 0) {
result = this.name.compareTo(o.name);
}
return result;
}
// getters and setters ...
}
```
接下来,我们可以创建一个 TreeSet 对象,用于存储 Student 对象,并调用 add 方法将多个 Student 对象添加进去,由于 TreeSet 会自动进行排序和去重,我们可以直接遍历 TreeSet,输出排序后的结果。
```java
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
// 创建 TreeSet 对象
Set<Student> set = new TreeSet<Student>();
// 添加多个 Student 对象
set.add(new Student("Tom", 18));
set.add(new Student("Lucy", 20));
set.add(new Student("Jack", 22));
set.add(new Student("Mike", 21));
set.add(new Student("Mary", 19));
// 遍历 TreeSet,输出排序后的结果
for(Student s : set) {
System.out.println(s.getName() + ", " + s.getAge());
}
}
}
```
输出结果如下:
```
Tom, 18
Mary, 19
Jack, 22
Mike, 21
Lucy, 20
```
可以看到,输出结果按照姓名的长度排序,并且具备唯一性。
阅读全文