public class Student implements Comparable<Student>{ private String name; private int age; //此处省略 无参构造、有参构造、get/set方法、toString方法 @Override public int compareTo(Student o) { int result = o.age‐this.age; //次要判断条件: 年龄相同时,按照姓名的字母顺序排序 result = result == 0 ? this.name.compareTo(o.getName()) : result; return result; } } TreeSet<Student> set = new TreeSet <>(); set.add(new Student("zhang",20)); set.add(new Student("zhang",20)); set.add(new Student("chen",20)); set.add(new Student("li",17)); for (Student s:set){ System.out.println(s.toString()); }
时间: 2024-04-15 20:25:14 浏览: 147
这段代码创建了一个TreeSet集合对象,并向其中添加了几个Student对象。然后通过迭代输出集合中的元素。
首先,代码创建了一个空的TreeSet对象,用于存储Student对象。接着,使用add方法向集合中添加了四个Student对象,分别是两个年龄为20的姓名为"zhang"的学生,一个年龄为20的姓名为"chen"的学生,以及一个年龄为17的姓名为"li"的学生。
最后,通过foreach循环遍历集合中的元素,并使用toString方法将每个元素转换为字符串进行输出。由于TreeSet会根据元素的自然顺序进行排序和去重,所以输出结果会按照Student类中定义的compareTo方法进行排序,并且会去除重复的学生对象。
输出结果可能类似于:
li, 17
zhang, 20
chen, 20
相关问题
如何对List进行排序呢,List中是Student对象(包含id,name和age字段),要求按name排序
可以使用Java中的Collections.sort方法对List进行排序,具体步骤如下:
1. 在Student类中实现Comparable接口,并重写compareTo方法,按照name字段进行比较。
例如:
```java
public class Student implements Comparable<Student> {
private int id;
private String name;
private int age;
// 构造方法、getter和setter省略
@Override
public int compareTo(Student o) {
return this.name.compareTo(o.getName());
}
}
```
2. 在调用Collections.sort方法对List进行排序时,List中的元素必须实现Comparable接口。因为在排序的过程中,需要比较元素之间的大小关系。
例如:
```java
List<Student> studentList = new ArrayList<>();
// 添加Student对象到List中
Collections.sort(studentList);
```
这样就可以按照name字段对List中的Student对象进行排序了。
阅读全文
相关推荐
















