请使用java写一方法 入参为List <Student >studentList 方法的作用为返回 将参数中的Student 对象根据id 去重并按age从小到大排序后的List对象
时间: 2024-05-05 12:20:44 浏览: 61
好的,以下是一个可能的实现:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Student {
private int id;
private int age;
public Student(int id, int age) {
this.id = id;
this.age = age;
}
public int getId() {
return id;
}
public int getAge() {
return age;
}
public static List<Student> deduplicateAndSortByAge(List<Student> studentList) {
Set<Integer> idSet = new HashSet<>();
List<Student> result = new ArrayList<>();
for (Student student : studentList) {
if (!idSet.contains(student.getId())) {
result.add(student);
idSet.add(student.getId());
}
}
result.sort(Comparator.comparingInt(Student::getAge));
return result;
}
public static void main(String[] args) {
List<Student> studentList = new ArrayList<>();
studentList.add(new Student(1, 20));
studentList.add(new Student(2, 25));
studentList.add(new Student(3, 22));
studentList.add(new Student(2, 23)); // duplicate id
studentList.add(new Student(4, 21));
List<Student> deduplicatedAndSorted = deduplicateAndSortByAge(studentList);
for (Student student : deduplicatedAndSorted) {
System.out.println(student.getId() + ", " + student.getAge());
}
}
}
```
这个代码定义了一个 `Student` 类,包含 `id` 和 `age` 两个属性,并且实现了一个静态方法 `deduplicateAndSortByAge`,该方法接收一个 `List<Student>` 类型的参数 `studentList`,并返回去重并按 `age` 从小到大排序后的 `List<Student>` 对象。
具体实现中,我们使用了一个 `HashSet` 来记录已经出现过的 `id`,以实现去重。然后,我们遍历原始的 `studentList`,对于每个 `Student` 对象,如果其 `id` 没有出现过,就将其加入 `result` 中,并将其 `id` 加入 `idSet` 中。最后,我们按照 `age` 进行排序,并返回最终结果。
在 `main` 方法中,我们构造了一个测试用的 `studentList`,并将其传入 `deduplicateAndSortByAge` 方法中进行测试。输出如下:
```
1, 20
4, 21
3, 22
2, 23
```
阅读全文