java stream list<学生信息>中的班级id。 比较list<班级>集合,id相同则为学生信息中班级名称赋值
时间: 2024-12-18 11:35:05 浏览: 4
在Java Stream API中,你可以通过以下步骤来实现这个功能:
1. 首先,假设你有一个`List<StudentInfo>`列表,其中每个`StudentInfo`对象都有一个`classId`属性,表示学生的班级ID;还有一个`List<Class>`列表,包含所有班级的信息,包括`id`和`name`。
```java
import java.util.*;
import java.util.stream.Collectors;
// 假设你有以下类结构
class StudentInfo {
private int classId;
// 其他属性...
}
class Class {
private int id;
private String name;
// 构造函数和其他方法...
}
// 假设你已经填充了这两个列表
List<StudentInfo> studentInfos = ...;
List<Class> classes = ...;
```
2. 使用Stream API,你可以创建一个流并过滤出学生信息中对应的班级ID:
```java
Map<Integer, Class> classById = classes.stream()
.collect(Collectors.toMap(Class::getId, Function.identity()));
```
这将把`classes`列表转换成一个键值对映射,键是`Class`的`id`,值是`Class`本身。
3. 然后遍历`studentInfos`列表,并根据班级ID查找对应的班级名称:
```java
studentInfos.forEach(student -> {
Optional<Class> optionalClass = classById.get(student.getClassId());
if (optionalClass.isPresent()) {
student.setClassName(optionalClass.get().getName());
} else {
System.out.println("找不到匹配的班级ID for " + student.getClassId());
}
});
```
这里使用`Optional`是因为可能会存在`classById`中找不到对应`classId`的情况。
阅读全文