java8 list<Student> list1 去除掉 list<Student> list2里面的对象
时间: 2023-11-18 21:05:55 浏览: 29
可以使用Java 8的Stream API和filter方法来实现这个功能。我们可以根据两个列表中元素的某个属性来比较它们是否相等。假设两个列表中的元素都有一个属性叫做"studentId",我们可以按照以下步骤实现去重:
```java
list1 = list1.stream()
.filter(s1 -> list2.stream()
.noneMatch(s2 -> s2.getStudentId().equals(s1.getStudentId())))
.collect(Collectors.toList());
```
首先,我们将list1转换成一个流。然后,我们使用filter方法过滤掉那些在list2中已经存在的元素。对于list1中的每个元素s1,我们使用noneMatch方法检查list2中是否存在一个元素s2,满足s2.getStudentId()等于s1.getStudentId()。如果存在这样的元素,noneMatch方法返回false,filter方法就会过滤掉这个元素。最后,我们将过滤后的元素收集到一个新的列表中。
相关问题
List<Student> 对象
List<Student> 是一个泛型类,它是一个列表,可以存储 Student 类型的对象。Student 类型的对象可以通过 add() 方法添加到列表中,也可以通过 get() 方法获取列表中的对象。例如:
```
List<Student> studentList = new ArrayList<>(); // 创建一个 List<Student> 对象
Student student1 = new Student("张三", 18); // 创建一个 Student 对象
Student student2 = new Student("李四", 20); // 创建另一个 Student 对象
studentList.add(student1); // 将 student1 添加到 studentList 中
studentList.add(student2); // 将 student2 添加到 studentList 中
Student student3 = studentList.get(0); // 获取 studentList 中的第一个对象,并将其赋值给 student3
```
在上面的例子中,我们创建了一个 List<Student> 对象 studentList,并且向其中添加了两个 Student 对象 student1 和 student2。我们还通过 get() 方法获取了 studentList 中的第一个对象,并将其赋值给 student3。
函数的原型如下: public static List<Student> filter(List<Student> students);
好的,以下是一个可能的解法:
```java
public static List<Student> filter(List<Student> students) {
List<Student> excellentStudents = new ArrayList<>();
for (Student student : students) {
if (student.getScore() >= 90 && student.getScore() <= 100) {
excellentStudents.add(student);
}
}
return excellentStudents;
}
```
这个函数接收一个 `List<Student>` 类型的参数 `students`,其中 `Student` 类包含学生的姓名和成绩。函数遍历 `students` 中的每一个学生,如果该学生的成绩大于等于 90 并且小于等于 100,则将该学生加入到结果列表 `excellentStudents` 中。最后将 `excellentStudents` 返回即可。
示例调用代码如下:
```java
List<Student> students = new ArrayList<>();
students.add(new Student("张三", 78));
students.add(new Student("李四", 92));
students.add(new Student("王五", 99));
students.add(new Student("赵六", 85));
List<Student> excellentStudents = filter(students);
System.out.println("优秀学生:");
for (Student student : excellentStudents) {
System.out.println(student.getName() + " " + student.getScore());
}
```
输出结果为:
```
优秀学生:
李四 92
王五 99
```